Code: Alles auswählen.
REPORT zmm_download_wm_best.
CONSTANTS:
gc_tab TYPE c VALUE cl_bcs_convert=>gc_tab,
gc_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf.
TYPES: tw_select_tab TYPE zmm_gib_mm_wm_best_output,
tt_select_tab TYPE STANDARD TABLE OF tw_select_tab.
TYPES: BEGIN OF tw_grid_tab.
INCLUDE TYPE tw_select_tab.
TYPES: icon01(30) TYPE c,
icon02(30) TYPE c,
icon03(30) TYPE c,
icon04(30) TYPE c,
icon05(30) TYPE c,
info(4) TYPE c,
colinfo TYPE lvc_t_scol,
style TYPE lvc_t_styl,
lights(1) TYPE c,
checkbox(1) TYPE c,
row_index TYPE sytabix,
updkz TYPE char01,
dnd_std TYPE lvc_t_drdr,
dnd_cust TYPE /gib/tbox_dnd_behavior_field_t,
edit_rowid TYPE sytabix,
edit_updkz(1) TYPE c.
TYPES: END OF tw_grid_tab.
TYPES: tt_grid_tab TYPE STANDARD TABLE OF tw_grid_tab.
DATA: lit_import TYPE tt_grid_tab,
lwa_import LIKE LINE OF lit_import.
DATA: gt_params TYPE TABLE OF rsparams.
DATA: reportname TYPE syrepid.
DATA: lit_char TYPE TABLE OF zmm_gib_mm_wm_best_output,
lwa_char LIKE LINE OF lit_char.
DATA: lit_csv TYPE truxs_t_text_data,
lwa_csv LIKE LINE OF lit_csv.
DATA: lit_binary_content TYPE solix_tab,
lwa_binary_content LIKE LINE OF lit_binary_content.
DATA: lv_size TYPE so_obj_len.
DATA: lv_string TYPE string.
DATA: lv_file TYPE string,
l_msg TYPE string.
DATA: ct_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcat LIKE LINE OF ct_fieldcat,
lv_header TYPE string.
DATA: gv_lines TYPE i,
lv_nr TYPE i VALUE 5000,
lv_init Type i value 0.
lv_file = |/usr/sap/{ sy-sysid(1) }10/trans/BIDATA/ZLO8N_Daten_neu.txt|.
reportname = 'ZMM_GIB_MM_WM_BEST'.
SUBMIT (reportname) USING SELECTION-SET 'DOWNLOAD'
AND RETURN.
IMPORT lit_export TO lit_import FROM MEMORY ID 'ZMM_DOWNLOAD_WM_BEST'.
DELETE FROM MEMORY ID 'ZMM_DOWNLOAD_WM_BEST'.
OPEN DATASET lv_file FOR OUTPUT IN BINARY MODE MESSAGE l_msg.
IF sy-subrc <> 0.
MESSAGE l_msg TYPE 'E'.
ENDIF.
gv_lines = lines( lit_import ).
PERFORM fieldcat_merge.
PERFORM import.
CLOSE DATASET lv_file.
FORM conv .
CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
EXPORTING
i_field_seperator = '|'
TABLES
i_tab_sap_data = lit_char
CHANGING
i_tab_converted_data = lit_csv
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Fehler bei Textkonvertierung' TYPE 'I'.
ENDIF.
LOOP AT lit_csv INTO lwa_csv .
CASE sy-tabix.
WHEN 1.
CONCATENATE lwa_csv gc_crlf INTO lv_string .
WHEN OTHERS.
CONCATENATE lv_string lwa_csv gc_crlf INTO lv_string .
ENDCASE.
ENDLOOP.
lv_string = lv_header && lv_string.
TRY.
cl_bcs_convert=>string_to_solix(
EXPORTING
iv_string = lv_string
iv_codepage = '' "suitable for MS Excel, leave empty
iv_add_bom = 'X' "for other doc types
IMPORTING
et_solix = lit_binary_content
ev_size = lv_size ).
CATCH cx_bcs.
MESSAGE e445(so).
ENDTRY.
LOOP AT lit_binary_content INTO lwa_binary_content.
TRANSFER lwa_binary_content-line TO lv_file.
ENDLOOP.
endform. " CONV
FORM fieldcat_merge .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZMM_GIB_MM_WM_BEST_OUTPUT'
CHANGING
ct_fieldcat = ct_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
LOOP AT ct_fieldcat INTO ls_fieldcat .
CASE sy-tabix.
WHEN 1.
CONCATENATE lv_header ls_fieldcat-fieldname INTO lv_header.
WHEN OTHERS.
CONCATENATE lv_header ls_fieldcat-fieldname INTO lv_header SEPARATED BY '|'.
ENDCASE.
ENDLOOP.
ENDFORM. " FIELDCAT_MERGE
FORM import .
LOOP AT lit_import INTO lwa_import.
IF sy-tabix >= lv_init and sy-tabix <= lv_nr.
MOVE-CORRESPONDING lwa_import TO lwa_char.
APPEND lwa_char TO lit_char.
CLEAR lwa_char.
ELSE.
IF lv_init <= gv_lines.
lv_nr = lv_nr + 5000.
lv_init = lv_init + 5000.
PERFORM conv.
PERFORM import.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " IMPORT
Guten Tag und vielen Dank schon mal.a-dead-trousers hat geschrieben:Da die Fehlermeldungen auf das CFW und ALV-Grid verweisen:
Lass im Batch-Modus (SY-BATCH = 'X') die Instanzierung (CREATE OBJECT) des CL_GUI_CUSTOM_CONTAINER für dein ALV-Grid weg und schon sollte es klappen.
Eventuell schalte auch das Grid auf "nicht eingabebereit"
Informationen zur Abbruchstelle
Der Abbruch trat im ABAP-Programm "CL_GUI_ALV_GRID===============CP" auf, und
zwar in
"SET_READY_FOR_INPUT". Das Hauptprogramm war "ZMM_GIB_MM_WM_BEST ".
Im Quelltext befindet sich die Abbruchstelle in Zeile 8
des (Include-)Programms "CL_GUI_ALV_GRID===============CM03J".
Das Programm "CL_GUI_ALV_GRID===============CP" wurde in einem Hintergrund-Job
gestartet.
Code: Alles auswählen.
method set_ready_for_input .
data: l_lines type i.
field-symbols <l_tab> type standard table.
if not ( offline( ) is initial ) .
if ( not i_ready_for_input is initial ).
>>>>>>>>>>> message x000(0k) with 'Editable Grid not operational Offline'. " HIER ERFOLGT DER DUMP
"#EC NOTEXT
endif.
m_edit_global = space.
m_init_toolbar = 'X'.
exit.
endif.
m_edit_global = i_ready_for_input.
m_init_toolbar = 'X'.
call method me->set_ready_for_input_internal.
if me->m_performance eq 'X' and
me->m_roids_sent eq space.
call method me->set_row_id
exporting
row_id_table = mt_roid.
m_roids_sent = 'X'.
Fehleranalyse
In dem Programm "CL_GUI_CFW====================CP" wurde durch eine
RAISE-Anweisung die Exception
(Ausnahmebedingung) "CNTL_ERROR" ausgelöst.
Da die Exception nicht durch ein in der Aufrufhierarchie darüber-
liegendes Programm abgefangen ist, wurde die Verarbeitung abgebrochen.
Code: Alles auswählen.
METHOD UPDATE_VIEW.
* ...
CALL FUNCTION 'AC_SYSTEM_FLUSH'
exporting CALLED_BY_SYSTEM = called_by_system
EXCEPTIONS
CNTL_SYSTEM_ERROR = 1
CNTL_ERROR = 2
OTHERS = 3.
CASE SY-SUBRC.
WHEN 0.
WHEN 1. "// system_error
RAISE CNTL_SYSTEM_ERROR.
WHEN 2. "// method_call_error
RAISE CNTL_ERROR.
WHEN 3. "// property_set_error
RAISE CNTL_ERROR.
WHEN 4. "// property_get_error
RAISE CNTL_ERROR.
WHEN OTHERS.
RAISE CNTL_ERROR.
ENDCASE.
ENDMETHOD.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
LostDarkness
Das hat funktioniert, vielen Dank!a-dead-trousers hat geschrieben:Du musst beim SET_READY_FOR_INPUT einen leeren Wert übergeben.
Im Feldkatalog darf auch kein Feld enthalten sein, dass EDIT aktiviert hat.