*&---------------------------------------------------------------------* *& Report RDDIT076 * *& * *&---------------------------------------------------------------------* REPORT rddit076 NO STANDARD PAGE HEADING LINE-SIZE 132. TABLES: e070. * global variables for RDDIT076 PARAMETERS: pg_order LIKE e070-trkorr . DATA: gv_order_text LIKE e07t-as4text, gv_col_len TYPE i, gv_bodend TYPE i, gv_bodbg TYPE i, gv_col_end TYPE i. DATA: gc_korrnr_len TYPE i VALUE '20', gc_fkt_len TYPE i VALUE '3', gc_stat_len TYPE i VALUE '4', gc_zielsys_len TYPE i VALUE '10', gc_kat_len TYPE i VALUE '4', gc_autor_len TYPE i VALUE '12', gc_datum_len TYPE i VALUE '10', gc_uzeit_len TYPE i VALUE '8', gc_qman_len TYPE i VALUE '4', gc_zman_len TYPE i VALUE '4', gc_bg TYPE i VALUE '1', gc_headrow TYPE i VALUE '6'. DATA: lv_x1 TYPE i. DATA: gv_reonflag TYPE c. DATA: BEGIN OF gt_col_info OCCURS 10, col_text(20) TYPE c, col_len TYPE i, END OF gt_col_info. DATA: gt_ko020 LIKE ko020 OCCURS 0 WITH HEADER LINE, gs_e070 LIKE e070, gt_e071 LIKE e071 OCCURS 0 WITH HEADER LINE, gt_e071k LIKE e071k OCCURS 0 WITH HEADER LINE, gs_e07t LIKE e07t, gs_e070c LIKE e070c. DATA: BEGIN OF lt_task OCCURS 10, trkorr LIKE e070-trkorr, strkorr LIKE e070-strkorr, END OF lt_task . ************************************************************************ START-OF-SELECTION. * initialize itab GT_COL_INFO CLEAR gt_col_info. gt_col_info-col_text = text-002. gt_col_info-col_len = gc_korrnr_len. APPEND gt_col_info. gt_col_info-col_text = text-003. gt_col_info-col_len = gc_fkt_len. APPEND gt_col_info. gt_col_info-col_text = text-004. gt_col_info-col_len = gc_stat_len. APPEND gt_col_info. gt_col_info-col_text = text-005. gt_col_info-col_len = gc_zielsys_len. APPEND gt_col_info. gt_col_info-col_text = text-006. gt_col_info-col_len = gc_kat_len. APPEND gt_col_info. gt_col_info-col_text = text-007. gt_col_info-col_len = gc_autor_len. APPEND gt_col_info. gt_col_info-col_text = text-008. gt_col_info-col_len = gc_datum_len. APPEND gt_col_info. gt_col_info-col_text = text-009. gt_col_info-col_len = gc_uzeit_len. APPEND gt_col_info. gt_col_info-col_text = text-010. gt_col_info-col_len = gc_korrnr_len. APPEND gt_col_info. gt_col_info-col_text = text-011. gt_col_info-col_len = gc_qman_len. APPEND gt_col_info. gt_col_info-col_text = text-012. gt_col_info-col_len = gc_zman_len. APPEND gt_col_info. * determine column length of the list gv_col_len = 1. LOOP AT gt_col_info. gv_col_len = gv_col_len + gt_col_info-col_len + 1. ENDLOOP. * get E070, E070C, E07T information of the ORDER ( PG_ORDER ) PERFORM initialize_task_list. PERFORM display_list. *----------------------------------------------------------------------* TOP-OF-PAGE. PERFORM top_of_page USING gc_bg gv_col_len. TOP-OF-PAGE DURING LINE-SELECTION. PERFORM top_of_page USING gc_bg gv_col_len. *----------------------------------------------------------------------* AT LINE-SELECTION. IF ( sy-cucol between gc_bg and gv_col_end ) and ( sy-curow eq gc_headrow or sy-curow between gv_bodbg and gv_bodend ). CALL FUNCTION 'TR_AUTHORITY_CHECK_ADMIN' EXPORTING iv_adminfunction = 'TABL' EXCEPTIONS e_no_authority = 1. IF sy-subrc = 0. CLEAR gv_reonflag. ELSE. gv_reonflag = 'X'. ENDIF. CALL FUNCTION 'TRINT_DISPLAY_REQUEST_HEADER' EXPORTING iv_read_only = gv_reonflag iv_trkorr = gs_e070-trkorr IMPORTING es_e070 = gs_e070 es_e070c = gs_e070c es_e07t = gs_e07t EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. IF gv_reonflag is initial. IF gs_e070-trkorr = pg_order. gv_order_text = gs_e07t-as4text. ENDIF. PERFORM modify_task_list USING gs_e070 gs_e070c gs_e07t. ENDIF. PERFORM display_list. ENDIF. *---------------------------------------------------------------- * display top of table *-------------------------------------------------------------- FORM top_of_page USING value(lv_bg) TYPE i value(lv_len) TYPE i. DATA: lv_curpos TYPE i, lv_e TYPE i, lv_korr_pos TYPE i, lv_text_pos TYPE i. lv_e = lv_bg + lv_len - 1. lv_korr_pos = lv_bg + 1. lv_text_pos = lv_korr_pos + gc_korrnr_len + 1. * ULINE AT /lv_bg(lv_len). WRITE: AT /lv_bg sy-vline. WRITE: AT lv_korr_pos pg_order COLOR 4 INTENSIFIED OFF. WRITE: AT lv_text_pos gv_order_text COLOR OFF INTENSIFIED OFF. WRITE: AT lv_e sy-vline. ULINE AT /lv_bg(lv_len). WRITE: AT /lv_bg sy-vline. lv_curpos = lv_bg + 1. LOOP AT gt_col_info. PERFORM list_col USING lv_curpos gt_col_info-col_len gt_col_info-col_text. lv_curpos = lv_curpos + gt_col_info-col_len + 1. ENDLOOP. ULINE AT /lv_bg(lv_len). ENDFORM. *---------------------------------------------------------------- * form to display the header of the columns *--------------------------------------------------------------- FORM list_col USING value(lv_pos) TYPE i value(lv_len) TYPE i value(lt_text) TYPE c. DATA: lv_pos_syl TYPE i. FIELD-SYMBOLS:. ASSIGN lt_text(lv_len) TO . lv_pos_syl = lv_pos + lv_len. WRITE: AT lv_pos COLOR 1 INTENSIFIED. WRITE: AT lv_pos_syl sy-vline. ENDFORM. *---------------------------------------------------------------------* * FORM DISP_E070 * *---------------------------------------------------------------------* FORM disp_e070 USING ps_e070 STRUCTURE e070 ps_e070c STRUCTURE e070c. DATA: lv_curpos TYPE i . lv_curpos = gc_bg. WRITE: AT /lv_curpos sy-vline. FORMAT COLOR 4 INTENSIFIED OFF. lv_curpos = lv_curpos + 1. WRITE: AT lv_curpos ps_e070-trkorr. lv_curpos = lv_curpos + gc_korrnr_len. WRITE: AT lv_curpos sy-vline. FORMAT COLOR 2 INTENSIFIED OFF. lv_curpos = lv_curpos + 1. WRITE: AT lv_curpos ps_e070-trfunction. lv_curpos = lv_curpos + gc_fkt_len. WRITE: AT lv_curpos sy-vline. lv_curpos = lv_curpos + 1. WRITE: AT lv_curpos ps_e070-trstatus. lv_curpos = lv_curpos + gc_stat_len. WRITE: AT lv_curpos sy-vline. lv_curpos = lv_curpos + 1. WRITE: AT lv_curpos ps_e070-tarsystem. lv_curpos = lv_curpos + gc_zielsys_len. WRITE: AT lv_curpos sy-vline. lv_curpos = lv_curpos + 1. WRITE: AT lv_curpos ps_e070-korrdev. lv_curpos = lv_curpos + gc_kat_len. WRITE: AT lv_curpos sy-vline. lv_curpos = lv_curpos + 1. WRITE: AT lv_curpos ps_e070-as4user. lv_curpos = lv_curpos + gc_autor_len. WRITE: AT lv_curpos sy-vline. lv_curpos = lv_curpos + 1. WRITE: AT lv_curpos ps_e070-as4date. lv_curpos = lv_curpos + gc_datum_len. WRITE: AT lv_curpos sy-vline. lv_curpos = lv_curpos + 1. WRITE: AT lv_curpos ps_e070-as4time. lv_curpos = lv_curpos + gc_uzeit_len. WRITE: AT lv_curpos sy-vline. lv_curpos = lv_curpos + 1. WRITE: AT lv_curpos ps_e070-strkorr. lv_curpos = lv_curpos + gc_korrnr_len. WRITE: AT lv_curpos sy-vline. lv_curpos = lv_curpos + 1. WRITE: AT lv_curpos ps_e070c-client. lv_curpos = lv_curpos + gc_qman_len. WRITE: AT lv_curpos sy-vline. lv_curpos = lv_curpos + 1. WRITE: AT lv_curpos ps_e070c-tarclient. lv_curpos = lv_curpos + gc_zman_len. WRITE: AT lv_curpos sy-vline. FORMAT RESET. ENDFORM. *------------------------------------------------------------- * form initialize_task_list to built up the list of the task * of an order * FORM initialize_task_list. CLEAR gt_ko020. REFRESH gt_ko020. CLEAR lt_task. REFRESH lt_task. PERFORM get_e070_entry TABLES gt_e071 gt_e071k USING pg_order gs_e070 gs_e070c gs_e07t . * check if PG_ORDER is a ORDER IF gs_e070-strkorr eq space. "order/task is an order MOVE-CORRESPONDING gs_e070 TO gt_ko020. MOVE-CORRESPONDING gs_e070c TO gt_ko020. MOVE-CORRESPONDING gs_e07t TO gt_ko020. APPEND gt_ko020. ELSE. " order/task is a task * read the corresponding order of the task PERFORM get_e070_entry TABLES gt_e071 gt_e071k USING gs_e070-strkorr gs_e070 gs_e070c gs_e07t . MOVE-CORRESPONDING gs_e070 TO gt_ko020. MOVE-CORRESPONDING gs_e070c TO gt_ko020. MOVE-CORRESPONDING gs_e07t TO gt_ko020. APPEND gt_ko020. pg_order = gs_e070-trkorr. ENDIF. * find all tasks belonging to the ORDER , store them in * lt_task SELECT * FROM e070 WHERE strkorr = pg_order . MOVE-CORRESPONDING e070 TO lt_task . APPEND lt_task. ENDSELECT. * initialize row, column values of the list lines. DESCRIBE TABLE lt_task LINES lv_x1. gv_bodbg = gc_headrow + 2. gv_bodend = gv_bodbg + lv_x1. gv_col_end = gc_bg + gv_col_len. * initialize text of the order gv_order_text = gs_e07t-as4text. * get all information of a task LOOP AT lt_task . PERFORM get_e070_entry TABLES gt_e071 gt_e071k USING lt_task-trkorr gs_e070 gs_e070c gs_e07t. MOVE-CORRESPONDING gs_e070 TO gt_ko020. MOVE-CORRESPONDING gs_e070c TO gt_ko020. MOVE-CORRESPONDING gs_e07t TO gt_ko020. APPEND gt_ko020. ENDLOOP. ENDFORM. *------------------------------------------------------------- * form display_list to generate the list from GT_KO020 *------------------------------------------------------------- FORM display_list. DATA lv_count TYPE i VALUE '0'. LOOP AT gt_ko020. MOVE-CORRESPONDING gt_ko020 TO gs_e070. MOVE-CORRESPONDING gt_ko020 TO gs_e070c. MOVE-CORRESPONDING gt_ko020 TO gs_e07t. * display entries in E070, E07T, E070C PERFORM disp_e070 USING gs_e070 gs_e070c . HIDE: gs_e070-trkorr. lv_count = lv_count + 1. IF sy-tabix eq 1. ULINE AT /gc_bg(gv_col_len). ENDIF. ENDLOOP. IF lv_count gt 1. ULINE AT /gc_bg(gv_col_len). ENDIF. sy-lsind = 0. ENDFORM. *---------------------------------------------------------------- * form modify_task_list modifies the entries in GT_KO020 *---------------------------------------------------------------- FORM modify_task_list USING ps_e070 STRUCTURE e070 ps_e070c STRUCTURE e070c ps_e07t STRUCTURE e07t. LOOP AT gt_ko020 WHERE trkorr = gs_e070-trkorr. MOVE-CORRESPONDING ps_e070 TO gt_ko020. MOVE-CORRESPONDING ps_e070c TO gt_ko020. MOVE-CORRESPONDING ps_e07t TO gt_ko020. MODIFY gt_ko020 INDEX sy-tabix. ENDLOOP. ENDFORM. *---------------------------------------------------------------------* * FORM GET_E070_ENTRY * *---------------------------------------------------------------------* FORM get_e070_entry TABLES pt_e071 pt_e071k USING value(order) LIKE e070-trkorr ps_e070 STRUCTURE e070 ps_e070c STRUCTURE e070c ps_e07t STRUCTURE e07t . CALL FUNCTION 'TR_READ_COMM' EXPORTING wi_dialog = ' ' wi_langu = sy-langu wi_sel_e070 = 'X' wi_sel_e071 = ' ' wi_sel_e071k = ' ' wi_sel_e07t = 'X' wi_trkorr = order wi_sel_e070c = 'X' IMPORTING we_e070 = ps_e070 we_e07t = ps_e07t we_e070c = ps_e070c TABLES wt_e071 = pt_e071 wt_e071k = pt_e071k EXCEPTIONS not_exist_e070 = 01 no_authorization = 02. IF sy-subrc = 1. MESSAGE i054(tk) WITH pg_order. * Auftrag/Aufgabe $ existiert nicht SET SCREEN 0. LEAVE SCREEN. ELSEIF sy-subrc = 2. MESSAGE i603(tk) WITH sy-uname. SET SCREEN 0. LEAVE SCREEN. ENDIF. ENDFORM.