Datenstrom in Baumstruktur anzeigen Dieses Programm ist ein besonderes Schmankerl! Hiermit können Sie einen RDI-Datenstrom in einer Baumstruktur anzeigen lassen. Die einzelnen Fenster und Elemente werden als eigene Äste dargestellt. Jeden Ast können Sie aufklappen und die Variablen sehen.für besonders wichtige Variablen (NAST, SYST, ) können separate Icons verwendet werden. Selektion der Spoolaufträge Die gefundenen Spoolaufträge
So werden die RDI-Daten angezeigt Inkludierte Texte werden als Einheit dargestellt Der Report
REPORT zrdi_baum MESSAGE-ID tree_control_msg LINE-SIZE 230. *********************************************************************** *** Programm zum Anzeigen eines RDI-Datenstroms in Form einer *** *** Baumstruktur. *** *** *** *** Features: *** *** Selektion nach Benutzer, Datum und Titel des Spoolauftrags *** *** Anzeige von RDI-Spoolaufträgen *** *** Aktualisieren der Liste *** *** Verwendung des TreeControls *** *** Anzeige von Inkludiertem Text *** *** Eigene Icons für die bestimmte Variablenstrukturen (NAST, *** *** SYST, oder andere) *** *** *** *** Anpassungen: *** *** PF-Status MAIN *** *** Ok-Codes: BACK für F3,SHift-F3, ESC *** *** PF-Status LISTE *** *** Ok-Codes: PICK zur Zeilenauswahl *** *** REFRESH zum Aktualisieren *** *** Dynpro 100 *** *** CustomControl RDITREE über die gesamte Dynprogröße einfügen *** *** Ablauflogik: *** *** PROCESS BEFORE OUTPUT. *** *** MODULE pbo_0100. *** *** PROCESS AFTER INPUT. *** *** MODULE USER_COMMAND_0100. *** *** *** *********************************************************************** *** *** *** *** *** http/www.tricktresor.de *** *** *** *** *** *********************************************************************** TYPE-POOLS icon. CLASS lcl_application DEFINITION DEFERRED. CLASS cl_gui_cfw DEFINITION LOAD. TYPES: node_table_type LIKE STANDARD TABLE OF mtreesnode WITH DEFAULT KEY. TYPES: item_table_type LIKE STANDARD TABLE OF mtreeitm WITH DEFAULT KEY. CONSTANTS: k_folder VALUE X, k_no_folder VALUE space, v VALUE.
DATA: l_rq LIKE tsp01sys, l_handle LIKE sy-tabix, l_spoolid LIKE tsp01-rqident, t_lines LIKE rspo_ds OCCURS 0 WITH HEADER LINE, t_pages LIKE rspo_index OCCURS 0 WITH HEADER LINE, BEGIN OF tbuffer OCCURS 0, x(6), line(1000), END OF tbuffer, t_tsp01 LIKE tsp01sys OCCURS 0 WITH HEADER LINE, l_tsp01 LIKE tsp01, BEGIN OF l_txtinc, system(10), name(70), object(4), id(4), spras(3), END OF l_txtinc, l_text(72), xnode(12), znode(12), xitem TYPE tv_nodekey, root_type(12), root_type_alt(12), root_spool(12), merk_type, merk_rdi_text, merk_element(40), merker_text_start, xicon TYPE tv_image, datum LIKE sy-datum, zeit LIKE sy-uzeit, g_event(30), g_node_key TYPE tv_nodekey, g_application TYPE REF TO lcl_application, g_custom_container TYPE REF TO cl_gui_custom_container, g_tree TYPE REF TO cl_gui_column_tree, g_ok_code TYPE sy-ucomm, merker_textcontrol, merk_spoolid(3) TYPE n, node_table TYPE treev_ntab, item_table TYPE item_table_type, node item LIKE mtreesnode, TYPE mtreeitm,
l_node_image LIKE node-n_image, * Generelle Struktur BEGIN OF struc, type, H=HEADER D=DATA S=???? C=CONTROL line(3000), END OF struc, * DATA BEGIN OF struc_data, BEGIN OF element, fenster(8), start, neu, element(30), END OF element, variable(131), len(3) TYPE n, wert(500), END OF struc_data, * HEADER BEGIN OF struc_header, version(4), mandt(3), char1, spoolid(11), spras, formname(16), geraet(10), leer1(65), charx, leer2(59), zahl, drucker(4), geraet2(12), suff1(6), suff2(4), suff3(12), charx2, leer3, zahl2, leer4(100), END OF struc_header, SAPGOF * CONTROL BEGIN OF struc_control, command(300), END OF struc_control. * *
* CLASS LCL_APPLICATION DEFINITION * * CLASS lcl_application DEFINITION. ENDCLASS. * * * CLASS LCL_APPLICATION IMPLEMENTATION * * CLASS lcl_application IMPLEMENTATION. ENDCLASS. * Selektionsbild SELECT-OPTIONS: s_rqown FOR t_tsp01-rqowner DEFAULT sy-uname, s_datum FOR sy-datum DEFAULT sy-datum TO sy-datum, s_rqtitl FOR t_tsp01-rqtitle. PARAMETERS: p_last AS CHECKBOX DEFAULT X. * Start START-OF-SELECTION. PERFORM spoolauftraege_selektieren. * PF-Code in der Liste AT USER-COMMAND. CASE g_ok_code. WHEN REFRESH. PERFORM spoolauftraege_selektieren. ENDCASE. * Doppelklick in der Liste AT LINE-SELECTION. * Lesen des Spoolauftrags * FB RSPO_RETURN_SPOOLJOB funktioniert leider nicht, da die übergebene * Tabelle nur 255 Zeichen lang ist. Wenn inkludierter Text dabei ist, * dann muss die Tabelle jedoch bis zu 1000 Zeichen breit sein! REFRESH tbuffer. l_tsp01 = t_tsp01. PERFORM read_data IN PROGRAM saplspox TABLES tbuffer USING l_tsp01 1 0. IF NOT tbuffer[] IS INITIAL. CREATE OBJECT g_application. CALL SCREEN 100.
*& Form CREATE_AND_INIT_TREE FORM create_and_init_tree. DATA: event TYPE cntl_simple_event, events TYPE cntl_simple_events, hierarchy_header TYPE treev_hhdr. CLEAR: node_table, item_table. * create a container for the tree control CREATE OBJECT g_custom_container container_name = RDITREE. hierarchy_header-heading = Spoolaufträge. hierarchy_header-width = 60. #EC NOTEXT * create a tree control CREATE OBJECT g_tree parent = g_custom_container node_selection_mode = cl_gui_column_tree=>node_sel_mode_single item_selection = X hierarchy_column_name = Column1 hierarchy_header = hierarchy_header. * Column 2 CALL METHOD g_tree->add_column name = Column2 width = 6 header_text = Len. * Column3 CALL METHOD g_tree->add_column name = Column3 width = 90 alignment = cl_gui_column_tree=>align_left header_text = Wert header_image = xicon. * Aufbau des Baumes PERFORM build_node_table. * Daten an TreeControl schicken CALL METHOD g_tree->add_nodes_and_items node_table = node_table item_table = item_table
item_table_structure_name = MTREEITM. * expand the node with key Root CALL METHOD g_tree->expand_node node_key = Root. * 1. Stufe Expandieren CALL METHOD g_tree->expand_node node_key = 1. * HeaderData Expandieren CALL METHOD g_tree->expand_node node_key = 2. ENDFORM. CREATE_AND_INIT_TREE *& Form BUILD_NODE_TABLE FORM build_node_table. * Node with key Root CLEAR node. node-node_key = Root. node-isfolder = X. node-expander = X. node-text = t_tsp01-rqident. APPEND node TO node_table. CLEAR item. item-node_key = Root. item-item_name = Column1. item-class = cl_gui_column_tree=>item_class_text. Text Item item-text = Liste. APPEND item TO item_table. xnode = 1. LOOP AT tbuffer. struc = tbuffer-line. CLEAR merker_text_start. CASE struc-type. WHEN D. struc_data = struc-line. IF merk_rdi_text = space. CHECK struc_data-variable <> space. CLEAR struc_data-element-start. CLEAR struc_data-element-neu.
WHEN H. struc_header = struc-line. WHEN S. CONTINUE. WHEN C. struc_control = struc-line. ENDCASE. IF merk_type <> struc-type OR ( merk_element <> struc_data-element AND struc_data-element <> space ). root_type_alt = root_type. root_type = xnode. CLEAR node. CASE struc-type. WHEN D. IF merk_rdi_text = space. CHECK struc_data-variable <> space. IF merk_rdi_text = X. merk_element = struc_data-element. SUBTRACT 2 FROM root_type. ELSE. merk_element = struc_data-element. PERFORM add_node USING xnode root_spool k_folder space. IF struc_data-element = space. struc_data-element =. PERFORM add_item USING node-node_key 1 struc_data-element. WHEN H. ADD 1 TO merk_spoolid. PERFORM add_node USING xnode Root k_folder icon_spool_request. PERFORM add_item USING xnode 1 Spoolauftrag. PERFORM add_item USING xnode 2 merk_spoolid. CLEAR item. item-node_key = xnode. item-item_name = Column3. item-class = cl_gui_column_tree=>item_class_text. CONCATENATE struc_header-suff1 struc_header-suff2 struc_header-suff3 INTO item-text SEPARATED BY space. APPEND item TO item_table. root_spool = xnode. ADD 1 TO xnode.
PERFORM add_node USING xnode root_spool k_folder icon_header. PERFORM add_item USING node-node_key 1 Headerdata. znode = xnode. PERFORM add_nodeitem USING znode Spoolauftrag space struc_header-spoolid. PERFORM add_nodeitem USING znode Formular space struc_header-formname. PERFORM add_nodeitem USING znode Drucker space struc_header-drucker. WHEN C. merker_textcontrol = X. IF struc_control CS RDI-CONTROL %%LINES-END OR struc_control(7) = INC-END. root_type = root_type_alt. merk_type = struc-type. merk_rdi_text = space. CONTINUE. ELSEIF struc_control CS RDI-CONTROL %%LINES-BEGIN OR struc_control(9) = INC-BEGIN. merk_element = RDI-Text. merk_rdi_text = X. PERFORM add_node USING xnode root_spool k_folder icon_customer_master_data_list. PERFORM add_item USING node-node_key 1 merk_element. CLEAR l_txtinc. SPLIT struc-line AT space INTO l_txtinc-system l_txtinc-name l_txtinc-object l_txtinc-id l_txtinc-spras. IF NOT l_txtinc IS INITIAL. CONCATENATE Name: l_txtinc-name Objekt: l_txtinc-object ID: l_txtinc-id Sprache: l_txtinc-spras INTO l_text SEPARATED BY space. PERFORM add_item USING node-node_key 2 space. PERFORM add_item USING node-node_key 3 l_text. ELSE. merker_textcontrol = space. PERFORM add_node USING xnode root_spool k_folder icon_draw_angular. PERFORM add_item USING node-node_key 1 Control. WHEN S.
CONTINUE. ENDCASE. ADD 1 TO xnode. merk_type = struc-type. CASE struc-type. WHEN D. CHECK merker_text_start = space. * * * * Hier können Icons für Felder angegeben werden, die im Datenstrom * besonders hervorstechen sollen * * * IF struc_data-variable(3) = SY-. node-n_image = icon_database_table. ELSEIF struc_data-variable(5) = NAST-. node-n_image = icon_msg. ELSEIF struc_data-variable(6) = L_RKO-. node-n_image = icon_header. ELSEIF struc_data-variable(10) = KONDITION-. node-n_image = icon_price. ELSEIF struc_data-variable(1) = $. node-n_image = icon_variable. ELSEIF merk_rdi_text = X. node-n_image = icon_text_field. l_node_image = node-n_image. DO. PERFORM add_node USING xnode root_type k_no_folder l_node_image. PERFORM add_item USING node-node_key 1 struc_data-variable. PERFORM add_item USING node-node_key 2 struc_data-len. PERFORM add_item USING node-node_key 3 struc_data-wert(72). SHIFT struc_data-wert BY 72 PLACES LEFT. IF struc_data-wert(72) = space. EXIT. ELSE. * Folgezeilen, falls der Text/ Variable zu lang ist (> 72 Zeichen) ADD 1 TO xnode. l_node_image = icon_space. CLEAR struc_data-len. ENDDO. WHEN H. CONTINUE. WHEN C. CLEAR node.
IF merker_textcontrol = space. PERFORM add_node USING xnode root_type k_no_folder space. PERFORM add_item USING node-node_key 1 struc_control-command. ELSEIF merk_rdi_text = X. merk_type = D. ELSE. merk_type = D. ENDCASE. ADD 1 TO xnode. ENDLOOP. ENDFORM. BUILD_NODE_TABLE *& Module pbo_0100 OUTPUT MODULE pbo_0100 OUTPUT. SET PF-STATUS MAIN. IF g_tree IS INITIAL. The Tree Control has not been created yet. Create a Tree Control and insert nodes into it. PERFORM create_and_init_tree. ENDMODULE. pbo_0100 OUTPUT *& Module USER_COMMAND_0100 INPUT MODULE user_command_0100 INPUT. DATA: return_code TYPE i. CASE g_ok_code. WHEN BACK. CALL METHOD cl_gui_cfw=>dispatch IMPORTING return_code = return_code. IF return_code <> cl_gui_cfw=>rc_noevent. a control event occured => exit PAI CLEAR g_ok_code. EXIT. CALL METHOD g_tree->free. CALL METHOD g_custom_container->free. CLEAR g_tree.
CLEAR g_custom_container. SET SCREEN 0. LEAVE SCREEN. ENDCASE. ENDMODULE. USER_COMMAND_0100 INPUT *& Form add_item FORM add_nodeitem USING value(nkey) value(col1) value(col2) value(col3). ADD 1 TO xnode. CLEAR node. node-node_key = xnode. node-relatkey = nkey. node-relatship = cl_gui_column_tree=>relat_last_child. APPEND node TO node_table. CLEAR item. item-node_key = xnode. item-item_name = Column1. item-class = cl_gui_column_tree=>item_class_text. item-text = col1. APPEND item TO item_table. CLEAR item. item-node_key = xnode. item-item_name = Column2. item-class = cl_gui_column_tree=>item_class_text. item-text = col2. APPEND item TO item_table. CLEAR item. item-node_key = xnode. item-item_name = Column3. item-class = cl_gui_column_tree=>item_class_text. item-text = col3. APPEND item TO item_table. ENDFORM. add_nodeitem * * * FORM add_item * * * FORM add_item USING value(f_node) value(f_col) value(f_text). CLEAR item.
item-node_key = f_node. CONCATENATE Column f_col INTO item-item_name. item-class = cl_gui_column_tree=>item_class_text. item-text = f_text. APPEND item TO item_table. ENDFORM. *& Form add_node FORM add_node USING value(f_node) value(f_relat) value(f_folder) value(f_img). CLEAR node. node-node_key = f_node. node-relatkey = f_relat. node-relatship = cl_gui_column_tree=>relat_last_child. node-isfolder = f_folder. node-expander = f_folder. node-n_image = f_img. node-exp_image = f_img. APPEND node TO node_table. ENDFORM. add_node *& Form spoolauftraege_selektieren FORM spoolauftraege_selektieren. sy-lsind = 1. SET PF-STATUS LISTE. CALL FUNCTION RSPO_ISELECT_SPOOLREQS rfcsystem = NONE TABLES s_rqowne = s_rqown s_rqcred = s_datum s_rqtitl = s_rqtitl result_tsp01 = t_tsp01 EXCEPTIONS error = 1 OTHERS = 2. CHECK sy-subrc = 0. LOOP AT t_tsp01 WHERE rqdoctype = RDI. WRITE: /
t_tsp01-rqident, t_tsp01-rq0name, t_tsp01-rq1name, t_tsp01-rq2name, t_tsp01-rqtitle, t_tsp01-rqowner, t_tsp01-rqdest. HIDE t_tsp01. ENDLOOP. CLEAR t_tsp01. IF p_last = X. CLEAR p_last. SET CURSOR LINE 3. SET USER-COMMAND PICK. ENDFORM. spoolauftraege_selektieren