ABAP /

ADDTASK

  1.  
  2. REPORT znadar_xx_crear_orden.
  3.  
  4. TABLES: sscrfields, usr01.
  5.  
  6. TABLES:  ko013.
  7.  
  8. SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME.
  9.   PARAMETERS: p_text TYPE text30 LOWER CASE OBLIGATORY DEFAULT 'XX:WB'.
  10.  
  11.   PARAMETERS: p_DESC TYPE as4text LOWER CASE,
  12.               p_prog TYPE versobjnam OBLIGATORY,
  13. *--[ Si no pones versión, irá a buscar la que le toca en la gestión de versiones
  14.               p_vers TYPE n LENGTH 3.
  15. SELECTION-SCREEN END OF BLOCK b01.
  16.  
  17. SELECT-OPTIONS: p_users FOR usr01-bname OBLIGATORY.
  18.  
  19. *--[ Permite buscar si ha sido metido en una orden y continuar con su descripción
  20. SELECTION-SCREEN FUNCTION KEY 1.
  21.  
  22. TYPES: BEGIN OF ty_St,
  23.          text(56),
  24.          colo(1),
  25.          vers(3),
  26.        END OF ty_st.
  27.  
  28. DATA: l_desc         TYPE as4text,
  29.       lt_attributes  TYPE scts_attrs,
  30.       lt_users       TYPE scts_users,
  31.       l_users        TYPE scts_user,
  32.       l_vers         TYPE n LENGTH 3,
  33.       l_mask         TYPE ty_st,
  34.       ps_new_request TYPE trwbo_request_header,
  35.       pt_new_tasks   TYPE trwbo_request_headers.
  36.  
  37. DATA: gr_table  TYPE REF TO cl_salv_table.
  38. TYPES: BEGIN OF ty_text,
  39.          as4text TYPE e07t-as4text,
  40.        END OF ty_text.
  41. DATA: t_ord TYPE STANDARD TABLE OF ty_text.
  42.  
  43. AT SELECTION-SCREEN.
  44.   DATA: t_return TYPE STANDARD TABLE OF ddshretval.
  45.   CASE sscrfields-ucomm.
  46.     WHEN 'FC01'.
  47.       CHECK NOT p_prog IS INITIAL.
  48.       DATA(l_obj_name) = '%' && p_prog && '%'.
  49.       SELECT * FROM e071 AS a
  50.  
  51.           INNER JOIN e070 AS b
  52.          ON b~trkorr = a~trkorr OR
  53.             b~strkorr = a~trkorr
  54.         INNER JOIN e07t AS c ON
  55.             c~trkorr = b~TRKorr
  56.         INTO CORRESPONDING FIELDS OF TABLE @t_ord
  57.         WHERE obj_name LIKE @l_OBJ_NAME AND
  58.       langu = @sy-langu.
  59.       SORT t_ord DESCENDING.
  60.  
  61.       DELETE ADJACENT DUPLICATES FROM t_ord.
  62.  
  63.       DATA: lr_content TYPE REF TO cl_salv_form_element.
  64.  
  65.       DATA: lr_selections TYPE REF TO cl_salv_selections.
  66.  
  67.  
  68.       cl_salv_table=>factory(
  69.        EXPORTING
  70.           list_display = 'X'
  71.         IMPORTING
  72.           r_salv_table = gr_table
  73.         CHANGING
  74.           t_table      = t_ord ).
  75.  
  76.       gr_table->set_screen_popup(
  77.         start_column = 1
  78.         end_column   = 100
  79.         start_line   = 1
  80.         end_line     = 20 ).
  81.  
  82.       lr_selections = gr_table->get_selections( ).
  83.       lr_selections->set_selection_mode( if_salv_c_selection_mode=>row_column ).
  84.  
  85.       gr_table->display( ).
  86.  
  87.       DATA(lo_selections) = gr_table->get_selections( ).
  88.  
  89.       DATA(lt_rows) = lo_selections->get_selected_rows( ).
  90.  
  91.       LOOP AT lt_rows INTO DATA(l_row).
  92.         READ TABLE t_ord INTO DATA(l_ord) INDEX l_row.
  93.         p_desc = l_ord-as4text.
  94.         EXIT.
  95.       ENDLOOP.
  96.     WHEN OTHERS.
  97. *--[ Ayuda automágica
  98.       IF p_vers IS INITIAL.
  99.         SELECT * FROM vrsd INTO TABLE @DATA(t_vers)
  100.         WHERE objname = @p_prog.
  101.  
  102.         IF sy-subrc EQ 0.
  103.           p_vers = lines( t_vers ).
  104.         ENDIF.
  105.       ENDIF.
  106.   ENDCASE.
  107.  
  108. INITIALIZATION.
  109.   MOVE '@13@ Buscar objeto'       TO sscrfields-functxt_01.
  110.   p_users-sign = 'I'.
  111.   p_users-option = 'EQ'.
  112.   p_users-low = sy-uname.     APPEND p_users.
  113.  
  114. end-of-SELECTION.
  115.  
  116.   IF p_vers IS INITIAL.
  117.     SELECT * FROM vrsd INTO TABLE @DATA(t_vers)
  118.     WHERE objname = @p_prog.
  119.  
  120.     IF sy-subrc EQ 0.
  121.       l_vers = lines( t_vers ).
  122.     ELSE.
  123.       l_vers = '001'.
  124.     ENDIF.
  125.   ELSE.
  126.     l_vers = p_vers.
  127.   ENDIF.
  128.  
  129.   CONCATENATE p_text p_desc INTO l_desc SEPARATED BY ':'.
  130.   REPLACE ALL OCCURRENCES OF '::' IN l_desc WITH ':'.
  131.   REPLACE ALL OCCURRENCES OF ' :' IN l_desc WITH ':'.
  132.   REPLACE ALL OCCURRENCES OF ': ' IN l_desc WITH ':'.
  133.   CONDENSE l_desc.
  134.   l_mask-text = l_desc.
  135.   l_mask-colo = ':'.
  136.   l_mask-vers = l_vers.
  137.   l_desc = l_mask.
  138.   SELECT * FROM usr01 INTO TABLE @DATA(l_usr01)
  139.   WHERE bname IN @p_users.
  140.   LOOP AT l_usr01 INTO DATA(l_sus).
  141.     l_users-user = l_sus-bname. l_users-type = 'X'.  APPEND l_users TO lt_users.
  142.   ENDLOOP.
  143.   IF lines( lt_users ) = 0.
  144.     l_users-user = sy-uname. l_users-type = 'X'.  APPEND l_users TO lt_users.
  145.   ENDIF.
  146.  
  147.   CALL FUNCTION 'TR_INSERT_REQUEST_WITH_TASKS'
  148.     EXPORTING
  149.       iv_type            = 'K'
  150.       iv_text            = l_desc
  151.       iv_target          = 'IS4'
  152.       it_attributes      = lt_attributes
  153.       it_users           = lt_users
  154.       iv_tardevcl        = ko013-tardevcl
  155.       iv_devclass        = ko013-devclass
  156.       iv_tarlayer        = ko013-tarlayer
  157.       iv_repoid          = ko013-repoid
  158.       iv_with_badi_check = 'X'
  159.     IMPORTING
  160.       es_request_header  = ps_new_request
  161.       et_task_headers    = pt_new_tasks
  162.     EXCEPTIONS
  163.       insert_failed      = 1
  164.       enqueue_failed     = 2
  165.       OTHERS             = 3.
  166.   IF sy-subrc EQ 0.
  167.     MESSAGE s398(00) WITH 'Orden creada'.
  168.   ELSE.
  169.     MESSAGE s398(00) WITH 'Fallo en orden'.
  170.   ENDIF.
  171.   LEAVE TO SCREEN 0.
Última modificación de la página el 17 March 2022 a las 09h00
Powered by PmWiki