|
<< Click to Display Table of Contents >> Navigation: All About ABAP Technique > ABAP Source Code > YUPLOAD_UPLOAD_LONGTEXT |
*&---------------------------------------------------------------------*
*& Report YO_UPLOAD_LONGTEXT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT yo_upload_longtext.
*------------------standard common includes----------------------------*
* ALV common functions
INCLUDE yo_alv_hier_common.
* BDC common Functions
*INCLUDE yo_bdc.
*------------------standard common includes---ends---------------------*
TABLES : t001l, mara.
TYPES : BEGIN OF ty_detail,
p_obj LIKE stxh-tdobject,
p_id LIKE stxh-tdid,
p_name LIKE stxh-tdname,
recno LIKE sy-tabix,
linetext LIKE tline-tdline,
exp,
chbox,
icon(4),
END OF ty_detail.
DATA: BEGIN OF gi_data OCCURS 0,
p_obj LIKE stxh-tdobject,
p_id LIKE stxh-tdid,
p_name LIKE stxh-tdname,
p_text LIKE tline-tdline,
p_delold,
exp,
chbox,
icon(4),
msg(200),
msg1(200),
msg2(200),
msg3(200),
END OF gi_data.
DATA : gi_detail TYPE STANDARD TABLE OF ty_detail WITH HEADER LINE,
gi_header LIKE STANDARD TABLE OF gi_data WITH HEADER LINE.
DATA : gv_string(256),
gv_testrun.
DATA : BEGIN OF gi_xls OCCURS 1,
tx_line LIKE gv_string.
DATA : END OF gi_xls.
DATA : gi_excel LIKE STANDARD TABLE OF alsmex_tabline WITH HEADER LINE.
DATA : gi_zemp LIKE STANDARD TABLE OF gi_xls WITH HEADER LINE.
*----------------------------------------------------------*
* Global Variable *
*----------------------------------------------------------*
TYPE-POOLS: icon, ole2.
FIELD-SYMBOLS <mnam> TYPE ANY.
FIELD-SYMBOLS <intab> TYPE ANY.
*&---------------------------------------------------------------------*
*& selection-screen -> Selection
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE cm_tlt01.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(20) cm_file FOR FIELD p_file.
PARAMETERS: p_file(128) OBLIGATORY DEFAULT 'D:\'.
SELECTION-SCREEN END OF LINE.
*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 01(31) cm_col01 FOR FIELD p_col01.
*PARAMETERS: p_col01(4) TYPE n DEFAULT 1.
*SELECTION-SCREEN COMMENT 41(10) cm_col02 FOR FIELD p_col02.
*PARAMETERS: p_col02(4) TYPE n DEFAULT 25.
*SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(31) cm_row01 FOR FIELD p_row01.
PARAMETERS: p_row01(4) TYPE n DEFAULT 3.
SELECTION-SCREEN COMMENT 41(10) cm_row02 FOR FIELD p_row02.
PARAMETERS: p_row02(4) TYPE n DEFAULT 9999.
SELECTION-SCREEN END OF LINE.
*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 1(18) cm_mode FOR FIELD pa_mode.
PARAMETERS pa_mode LIKE ctu_params-dismode NO-DISPLAY." OBLIGATORY DEFAULT 'N'.
*SELECTION-SCREEN COMMENT 70(21) gv_info.
*SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK a.
*----------------------------------------------------------------------*
* INITIALIZATION.
*----------------------------------------------------------------------*
INITIALIZATION.
PERFORM fm_initialization.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM fm_val_req_fname.
*----------------------------------------------------------------------*
* START-OF-SELECTION.
*----------------------------------------------------------------------*
START-OF-SELECTION.
CHECK p_file IS NOT INITIAL.
PERFORM fm_collect_data.
PERFORM fm_process_data.
PERFORM fm_validate_data.
PERFORM fm_display_data.
* PERFORM FM_UPLOAD_DATA.
*
* PERFORM FM_REFRESH_INTAB.
*&---------------------------------------------------------------------*
*& Form fm_val_req_fname
*&---------------------------------------------------------------------*
FORM fm_val_req_fname .
DATA: lv_program_name LIKE sy-repid,
lv_dynpro_number LIKE sy-dynnr,
lv_field_name LIKE dynpread-fieldname,
lv_file_name LIKE ibipparms-path.
lv_program_name = sy-repid.
lv_dynpro_number = sy-dynnr.
lv_field_name = 'P_FNAME'.
PERFORM fm_f4_filename
USING lv_program_name
lv_dynpro_number
lv_field_name
CHANGING lv_file_name.
p_file = lv_file_name.
ENDFORM. " fm_val_req_fname
*&---------------------------------------------------------------------*
*& Form fm4_filename
*&---------------------------------------------------------------------*
FORM fm_f4_filename
USING p_e_program_name
p_e_dynpro_number
p_e_field_name
CHANGING p_i_file_name.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = p_e_program_name
dynpro_number = p_e_dynpro_number
field_name = p_e_field_name
IMPORTING
file_name = p_i_file_name.
ENDFORM. " fm4_filename
*&---------------------------------------------------------------------*
*& Form fm_gui_upload
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_DATA_TAB text
* -->P_E_FILENAME text
*----------------------------------------------------------------------*
FORM fm_gui_upload TABLES p_t_data_tab
USING p_e_filename.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_e_filename
filetype = 'DAT'
* IMPORTING
* filelength = p_i_filelength
* header = p_i_header
TABLES
data_tab = p_t_data_tab
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " fm_gui_upload
*&---------------------------------------------------------------------*
*& Form FM_GET_DATA_EXCEL_OBJECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GI_EXCEL text
* -->P_PA_FNAME text
* -->P_PA_COL01 text
* -->P_PA_COL02 text
* -->P_PA_ROW01 text
* -->P_PA_ROW02 text
*----------------------------------------------------------------------*
FORM fm_get_data_excel_object TABLES p_gi_excel
USING p_pa_fname
p_pa_col01
p_pa_col02
p_pa_row01
p_pa_row02.
DATA : lv_col01 TYPE i,
lv_col02 TYPE i,
lv_row01 TYPE i,
lv_row02 TYPE i.
lv_col01 = p_pa_col01.
lv_col02 = p_pa_col02.
lv_row01 = p_pa_row01.
lv_row02 = p_pa_row02.
PERFORM fm_gui_message USING 'Open Excel Files and Call Object ...' ''.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_pa_fname
i_begin_col = lv_col01
i_begin_row = lv_row01
i_end_col = lv_col02
i_end_row = lv_row02
TABLES
intern = p_gi_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 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.
ELSE.
PERFORM fm_gui_message USING 'Finish Reading Excel Data ...' ''.
ENDIF.
ENDFORM. "FM_GET_DATA_EXCEL_OBJECT
*&---------------------------------------------------------------------*
*& Form FM_PUT_DATA_ARRAY
*&---------------------------------------------------------------------*
FORM fm_put_data_array TABLES p_it_zemp .
APPEND 'MATNR' TO p_it_zemp.
APPEND 'BISMT' TO p_it_zemp.
APPEND 'DESCR1' TO p_it_zemp.
APPEND 'WERKS' TO p_it_zemp.
APPEND 'STTAG' TO p_it_zemp.
* APPEND 'PLNNR' TO p_it_zemp.
APPEND 'PLNAL' TO p_it_zemp.
APPEND 'DESCR2' TO p_it_zemp.
APPEND 'VERWE' TO p_it_zemp.
APPEND 'STATU' TO p_it_zemp.
APPEND 'ARBPL' TO p_it_zemp.
APPEND 'STEUS' TO p_it_zemp.
APPEND 'BMSCH' TO p_it_zemp.
* APPEND 'MEINH' TO p_it_zemp.
APPEND 'VGW01' TO p_it_zemp.
APPEND 'VGE01' TO p_it_zemp.
ENDFORM. " FM_PUT_DATA_ARRAY
*&---------------------------------------------------------------------*
*& Form FM_INSERT_DATA_TO_INTAB
*&---------------------------------------------------------------------*
FORM fm_insert_data_to_intab .
DATA : li_tamp LIKE STANDARD TABLE OF gi_xls WITH HEADER LINE,
lv_cntr TYPE i,
lv_pos TYPE i,
lv_num TYPE i,
lv_field(20) TYPE c,
lv_table(20) TYPE c VALUE 'GI_DATA',
lv_fname(30) TYPE c,
ppterid TYPE i.
LOOP AT gi_excel.
READ TABLE gi_zemp INDEX gi_excel-col.
lv_field = gi_zemp-tx_line.
CONCATENATE lv_table '-' lv_field INTO lv_fname.
CONDENSE lv_fname.
ASSIGN (lv_fname) TO <mnam>.
CONDENSE gi_excel-value.
TRANSLATE gi_excel-value TO UPPER CASE.
<mnam> = gi_excel-value.
AT END OF row.
lv_num = 0.
APPEND gi_data.
CLEAR gi_data.
ENDAT.
ENDLOOP.
ENDFORM. " FM_INSERT_DATA_TO_INTAB
*&---------------------------------------------------------------------*
*& Form fm_refresh_intab
*&---------------------------------------------------------------------*
FORM fm_refresh_intab.
* here free all the internal table used in the program.
REFRESH: gi_data.
ENDFORM. " fm_refresh_intab
*&---------------------------------------------------------------------*
*& Form fm_gui_message
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->fu_text1 text
* -->fu_text2 text
*----------------------------------------------------------------------*
FORM fm_gui_message USING fu_text1 fu_text2.
DATA: ld_text1(100) TYPE c.
CONCATENATE fu_text1 fu_text2 INTO ld_text1
SEPARATED BY space.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = ld_text1.
ENDFORM. " fm_gui_message
*&---------------------------------------------------------------------*
*& Form fm_display_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_display_data.
PERFORM fm_alv_reset_data.
* Set ALV Parameters and Data
PERFORM fm_alv_set_layout USING 'List Text'.
PERFORM fm_alv_set_print.
PERFORM fm_alv_set_column.
gv_i_default = 'X'.
gv_i_save = 'A'.
PERFORM fm_alv_show_hier TABLES gi_header gi_detail.
ENDFORM. "fm_display_data
*&---------------------------------------------------------------------*
*& Form fm_alv_set_column
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_alv_set_column.
* Displaying Column by Fieldname
PERFORM fm_alv_add_fieldcat USING 'GI_HEADER':
'ICON' 'GI_HEADER' 'ICON' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'X' 'X' 'X',
"Screen 1
'P_OBJ' 'GI_HEADER' 'P_OBJ' '' '' '' '' '' 'Object Code' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
'P_ID' 'GI_HEADER' 'P_ID' '' '' '' '' '' 'ID Text' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
'P_NAME' 'GI_HEADER' 'P_NAME' '' '' '' '' '' 'NAME' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
'P_TEXT' 'GI_HEADER' 'P_TEXT' '' '' '' '' '' 'Text (72 Char)' '' '' '' '' '' '' '' '' '' '' '' '',
'P_DELOLD' 'GI_HEADER' 'P_DELOLD' '' '' '' '' '' 'Del Old Text' '' '' '' '' '' '' '' '' '' '' '' '',
'MSG' 'GI_HEADER' 'MSG' '' '' '' '' '' 'Message' '' '' '' '' '' '' '' '' '' '' '' ''.
* 'MSG1' 'GI_HEADER' 'MSG' '' '' '' '' '' 'Message' '' '' '' '' '' '' '' '' '' '' '' '',
* 'MSG2' 'GI_HEADER' 'MSG' '' '' '' '' '' 'Message' '' '' '' '' '' '' '' '' '' '' '' '',
* 'MSG3' 'GI_HEADER' 'MSG' '' '' '' '' '' 'Message' '' '' '' '' '' '' '' '' '' '' '' ''.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_internal_tabname = 'GI_HEADER'
* i_structure_name = ''
CHANGING
ct_fieldcat = gi_it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
* Set Detail Column
PERFORM fm_alv_add_fieldcat USING 'GI_DETAIL':
* 'P_OBJ' 'GI_DETAIL' 'P_OBJ' '' '' '' '' '' 'Object Code' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
* 'P_ID' 'GI_DETAIL' 'P_ID' '' '' '' '' '' 'ID Text' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
* 'P_NAME' 'GI_DETAIL' 'P_NAME' '' '' '' '' '' 'NAME' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
'RECNO' 'GI_DETAIL' 'RECNO' '' '' '' '' '' 'No' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
'LINETEXT' 'GI_DETAIL' 'LINETEXT' '' '' '' '' '' 'Text' '' '' '' '' '' '' '' '' '' '' '' ''.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_internal_tabname = 'GI_DETAIL'
* i_structure_name = '
CHANGING
ct_fieldcat = gi_it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
* Sort and Group by Field
* CLEAR gi_it_sort.
* gi_it_sort-fieldname = 'WERKS'. ">> Filled by Fieldname
* gi_it_sort-up = 'X'. ">> 'X' = Ascending ; ' ' = Descending
* gi_it_sort-subtot = 'X'.
* gi_it_sort-group = '*'. ">> '*' = Grouped by field ; ' ' = Not grouped by this field
* APPEND gi_it_sort.
ENDFORM. "fm_alv_set_column
*&--------------------------------------------------------------------*
*& Form FM_USER_COMMAND
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM fm_alv_user_command USING fu_ucomm LIKE sy-ucomm
fu_selfield TYPE slis_selfield.
DATA: lt_dynpread LIKE dynpread OCCURS 0 WITH HEADER LINE,
lv_ok_code LIKE sy-ucomm.
MOVE fu_ucomm TO lv_ok_code.
CASE lv_ok_code.
WHEN '&UPLOAD'.
gv_testrun = ' '.
PERFORM fm_upload_data.
WHEN '&TEST'.
gv_testrun = 'X'.
PERFORM fm_upload_data.
WHEN '&IC1'.
* PERFORM fm_alv_event_double_click.
WHEN '&ETA'.
* PERFORM fm_alv_event_double_click.
WHEN '&F03' OR '&F15' OR '&F12'.
ENDCASE.
MOVE 'X' TO fu_selfield-refresh.
ENDFORM. "FM_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form fm_build_keyinfo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FU_KEYINFO text
*----------------------------------------------------------------------*
FORM fm_build_keyinfo USING fu_keyinfo TYPE slis_keyinfo_alv .
fu_keyinfo-header01 = 'P_OBJ'.
fu_keyinfo-header02 = 'P_ID'.
fu_keyinfo-header03 = 'P_NAME'.
fu_keyinfo-item01 = 'P_OBJ'.
fu_keyinfo-item02 = 'P_ID'.
fu_keyinfo-item03 = 'P_NAME'.
ENDFORM. "fm_build_keyinfo
*&---------------------------------------------------------------------*
*& Form fm_get_string_from_excel
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FU_FNAME text
* -->FU_ROW01 text
* -->FU_ROW02 text
*----------------------------------------------------------------------*
FORM fm_get_string_from_excel USING fu_fname
fu_row01
fu_row02.
TYPES : BEGIN OF ty_ltext,
line(5000),
END OF ty_ltext.
DATA : lv_text TYPE string,
lv_loop_count TYPE i,
lv_char_count TYPE n LENGTH 5,
lv_line_count TYPE n LENGTH 5,
lv_row TYPE i,
lv_column TYPE i,
lv_obj LIKE stxh-tdobject,
lv_id LIKE stxh-tdid,
lv_name LIKE stxh-tdname,
lv_delold.
DATA : li_text TYPE STANDARD TABLE OF ty_ltext WITH HEADER LINE.
"Excel Object Variable
DATA : application TYPE ole2_object,
workbook TYPE ole2_object,
range TYPE ole2_object,
worksheet TYPE ole2_object,
cell1 TYPE ole2_object,
cell2 TYPE ole2_object,
cell3 TYPE ole2_object,
cell4 TYPE ole2_object,
cell5 TYPE ole2_object.
CREATE OBJECT application 'Excel.Application'.
IF sy-subrc <> 0.
EXIT.
ENDIF.
CALL METHOD OF application 'Workbooks' = workbook.
CALL METHOD OF workbook 'Open'
EXPORTING
#1 = fu_fname.
GET PROPERTY OF application 'ACTIVESHEET' = worksheet.
REFRESH : gi_header, gi_detail.
lv_row = fu_row01.
lv_loop_count = fu_row02 - fu_row01.
DO lv_loop_count TIMES.
CLEAR : gi_header, gi_detail, lv_text, lv_column,
lv_obj, lv_id, lv_name, lv_text, lv_delold.
"Add Data Detail
"Column 1 - Object Code
CALL METHOD OF worksheet 'Cells' = cell1
EXPORTING
#1 = lv_row
#2 = 1.
CALL METHOD OF cell1 'Value' = lv_obj.
gi_header-p_obj = lv_obj.
IF lv_obj IS INITIAL.
EXIT.
ENDIF.
"Column 2 - ID Text
CALL METHOD OF worksheet 'Cells' = cell2
EXPORTING
#1 = lv_row
#2 = 2.
CALL METHOD OF cell2 'Value' = lv_id.
gi_header-p_id = lv_id.
"Column 3 - Name
CALL METHOD OF worksheet 'Cells' = cell3
EXPORTING
#1 = lv_row
#2 = 3.
CALL METHOD OF cell3 'TEXT' = lv_name.
gi_header-p_name = lv_name.
"--------------------------------------------------------------------------------
"Add Data Detail Text
"Column 5 - Long Text
CALL METHOD OF worksheet 'Cells' = cell5
EXPORTING
#1 = lv_row
#2 = 4.
CALL METHOD OF cell5 'Text' = lv_text.
SPLIT lv_text AT cl_abap_char_utilities=>newline"Used char 13 as Separator
INTO TABLE li_text.
LOOP AT li_text .
MOVE-CORRESPONDING gi_header TO gi_detail.
gi_detail-linetext = li_text-line.
gi_detail-recno = sy-tabix.
APPEND gi_detail.
ENDLOOP.
lv_char_count = STRLEN( lv_text ).
lv_line_count = LINES( li_text ).
CONCATENATE 'Total : Char(s) =' lv_char_count 'Line(s) = ' lv_line_count
INTO gi_header-p_text
SEPARATED BY space.
"----------------------------------------------------------------------------------
"Column 5 - Delete Old Text
CALL METHOD OF worksheet 'Cells' = cell3
EXPORTING
#1 = lv_row
#2 = 5.
CALL METHOD OF cell3 'Value' = lv_delold.
gi_header-p_delold = lv_delold.
APPEND gi_header.
ADD 1 TO lv_row.
ENDDO.
"Quit and Close Excel File
CALL METHOD OF application 'QUIT'.
ENDFORM. "fm_get_string_from_excel
*&---------------------------------------------------------------------*
*& Form fm_initialization
*&---------------------------------------------------------------------*
FORM fm_initialization .
cm_tlt01 = 'File Location'.
cm_file = 'File Location'.
* cm_col01 = 'Start column'.
* cm_col02 = 'End column'.
cm_row01 = 'Start Row'.
cm_row02 = 'End Row'.
* cm_mode = 'Process Mode'.
ENDFORM. " fm_initialization
*&---------------------------------------------------------------------*
*& Form fm_collect_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_collect_data.
* PERFORM fm_get_data_excel_object TABLES gi_excel
* USING p_file
* p_col01 p_col02
* p_row01 p_row02.
* PERFORM fm_put_data_array TABLES gi_zemp.
* PERFORM fm_insert_data_to_intab.
PERFORM fm_get_string_from_excel USING p_file
p_row01
p_row02.
ENDFORM. " fm_collect_data
*&---------------------------------------------------------------------*
*& Form fm_process_data_im
*&---------------------------------------------------------------------*
FORM fm_process_data.
SORT gi_header BY p_obj p_id p_name.
DELETE ADJACENT DUPLICATES FROM gi_header
COMPARING p_obj p_id p_name.
ENDFORM. " fm_process_data_im
*&---------------------------------------------------------------------*
*& Form fm_validate_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_validate_data.
LOOP AT gi_header.
IF gi_header-p_obj IS INITIAL.
gi_header-icon = icon_led_red.
gi_header-msg = 'Object Code cannot empty !!'.
gi_header-chbox = ' '.
ELSEIF gi_header-p_id IS INITIAL.
gi_header-icon = icon_led_red.
gi_header-msg = 'ID Text cannot empty !!'.
gi_header-chbox = ' '.
ELSEIF gi_header-p_name IS INITIAL.
gi_header-icon = icon_led_red.
gi_header-msg = 'Object Name cannot empty !!'.
gi_header-chbox = ' '.
ELSE.
gi_header-icon = icon_led_green.
gi_header-msg = 'Ready to Upload !!'.
gi_header-chbox = 'X'.
ENDIF.
MODIFY gi_header.
ENDLOOP.
ENDFORM. "fm_validate_data
*&---------------------------------------------------------------------*
*& Form fm_upload_data_im
*&---------------------------------------------------------------------*
FORM fm_upload_data .
DATA : lv_subrc LIKE sy-subrc.
data : li_text LIKE STANDARD TABLE OF tline WITH HEADER LINE.
DATA : lv_count(6),
lv_index(6),
lv_text1(20).
lv_count = LINES( gi_header ).
CONCATENATE '/' lv_count INTO lv_text1.
LOOP AT gi_header WHERE chbox = 'X' AND
icon = icon_led_green.
refresh : li_text.
LOOP AT gi_detail WHERE p_obj = gi_header-p_obj and
p_id = gi_header-p_id and
p_name = gi_header-p_name.
li_text-tdformat = '*'.
li_text-tdline = gi_detail-linetext.
APPEND li_text.
ENDLOOP.
PERFORM fm_insert_text_single TABLES li_text
USING gi_header-p_name
gi_header-p_id
gi_header-p_obj
gi_header-p_delold
CHANGING lv_subrc.
IF lv_subrc = 0.
gi_header-msg = 'Succeed.'.
gi_header-icon = icon_checked.
ELSE.
gi_header-msg = 'Failed.'.
gi_header-icon = icon_incomplete.
ENDIF.
MODIFY gi_header.
ADD 1 TO lv_index.
PERFORM fm_gui_message USING lv_index lv_text1.
ENDLOOP.
ENDFORM. " fm_upload_data
*&---------------------------------------------------------------------*
*& Form fm_insert_text_single
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FU_NAME text
* -->FU_ID text
* -->FU_OBJ text
* -->FU_TEXT text
* -->FU_DELOLD text
* -->FC_SUBRC text
*----------------------------------------------------------------------*
FORM fm_insert_text_single TABLES ft_text STRUCTURE tline
USING fu_name
fu_id
fu_obj
fu_delold
CHANGING fc_subrc.
DATA : lv_line_count TYPE i,
lv_ltxa1 LIKE plpo-ltxa1,
lv_ltxa2 LIKE plpo-ltxa2,
lw_stxh LIKE stxh,
lw_textheader LIKE thead.
DATA : li_text LIKE STANDARD TABLE OF tline WITH HEADER LINE.
"Check Text
SELECT SINGLE * INTO lw_stxh FROM stxh
WHERE tdobject = fu_obj
AND tdname = fu_name
AND tdid = fu_id
AND tdspras = sy-langu.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = fu_id
language = sy-langu
name = fu_name
object = fu_obj
IMPORTING
header = lw_textheader
TABLES
lines = li_text.
ELSE.
CALL FUNCTION 'INIT_TEXT'
EXPORTING
id = fu_id
language = sy-langu
name = fu_name
object = fu_obj
IMPORTING
header = lw_textheader
TABLES
lines = li_text.
ENDIF.
"Insert or Delete Text
IF fu_delold = 'X'.
REFRESH : li_text.
ENDIF.
LOOP AT ft_text.
li_text-tdformat = '*'.
li_text-tdline = ft_text-tdline.
APPEND li_text.
ENDLOOP.
"Save New Long Text
lw_textheader-tdlinesize = 72.
lw_textheader-tdtxtlines = lv_line_count.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
header = lw_textheader
savemode_direct = 'X'
TABLES
lines = li_text.
fc_subrc = sy-subrc.
ENDFORM. "fm_insert_text_single