W Pub: ABAP Prog Propios Gestion

  1. REPORT ZNADAR_TRANSPORTA NO STANDARD PAGE HEADING LINE-SIZE 130.
  2. * Original: RDDPROTL
  3. INCLUDE <ICON>.
  4. TABLES: DD07T, TSTRFCOFIL, E07T, E071, E070L, E070, USR01, SSCRFIELDS,
  5.         ZCET_TR_POSITION.
  6.  
  7. CONSTANTS: YOSOY LIKE SY-UNAME VALUE 'DES016',
  8.            ESTOY(10) VALUE 'BCN.',
  9.            SUPERVISOR LIKE SY-UNAME VALUE 'DES015',
  10.            PROYECTO(15) VALUE 'ANIBAL.'.
  11.  
  12. ************* Creacin de Ordenes
  13. PARAMETERS: USUARI LIKE SY-UNAME.
  14. SELECTION-SCREEN BEGIN OF LINE.
  15. PARAMETERS: BOLA1 RADIOBUTTON GROUP TIT.
  16. SELECTION-SCREEN COMMENT 5(30) BOL01.
  17. SELECTION-SCREEN END OF LINE.
  18. PARAMETERS: NOM(10),
  19.             DESC(60) LOWER CASE,
  20.             FELIPE LIKE SY-UNAME DEFAULT SUPERVISOR.
  21. SELECTION-SCREEN SKIP 1.
  22. SELECTION-SCREEN BEGIN OF LINE.
  23. PARAMETERS: BOLA2 RADIOBUTTON GROUP TIT.
  24. SELECTION-SCREEN COMMENT 5(40) BOL2.
  25. SELECTION-SCREEN END OF LINE.
  26. PARAMETERS: ADDPARAM LIKE SXPGCOLIST-PARAMETERS,
  27.             CMDNAME(20) DEFAULT 'Z_TRANS'.
  28. ************* Parametros Log Orden
  29. SELECTION-SCREEN SKIP 1.
  30.  
  31. SELECTION-SCREEN BEGIN OF LINE.
  32. PARAMETERS: BOLA3 RADIOBUTTON GROUP TIT DEFAULT 'X'.
  33. SELECTION-SCREEN COMMENT 5(40) BOL03.
  34. SELECTION-SCREEN END OF LINE.
  35.  
  36. PARAMETERS: ORDEN(20).
  37. SELECT-OPTIONS: SOLICI FOR ZCET_TR_POSITION-SOLICITUD,
  38.                 SYUNAME FOR SY-UNAME.
  39. PARAMETERS: LESS LIKE  TSTRFCOFIL-TARSYSTEM.  "Find
  40. SELECTION-SCREEN SKIP 1.
  41. SELECT-OPTIONS FCREA   FOR E070-AS4DATE.
  42. SELECT-OPTIONS FLIBERA FOR TSTRFCOFIL-TRDATE.
  43. PARAMETERS OBJE LIKE E071-OBJ_NAME.
  44. SELECTION-SCREEN SKIP 1.
  45. SELECTION-SCREEN BEGIN OF LINE.
  46. SELECTION-SCREEN COMMENT 01(18) TXT01.
  47. PARAMETERS: DEST AS CHECKBOX DEFAULT 'X'. "View Destination
  48. SELECTION-SCREEN COMMENT 30(18) TXT02.
  49. PARAMETERS: OBJ     AS CHECKBOX DEFAULT 'X'. "View Objects
  50. SELECTION-SCREEN COMMENT 60(18) TXT03.
  51. PARAMETERS: FLASTKR AS CHECKBOX DEFAULT 'X'. "View Last order
  52. SELECTION-SCREEN END OF LINE.
  53.  
  54. SELECTION-SCREEN BEGIN OF LINE.
  55. SELECTION-SCREEN COMMENT 01(18) TXT04.
  56. PARAMETERS: ERROR_G AS CHECKBOX DEFAULT 'X'. "View OK order
  57. SELECTION-SCREEN COMMENT 30(18) TXT05.
  58. PARAMETERS: ERROR_Y AS CHECKBOX DEFAULT 'X'. "View Warning order
  59. SELECTION-SCREEN COMMENT 60(18) TXT06.
  60. PARAMETERS: ERROR_R AS CHECKBOX DEFAULT 'X'. "View Error order
  61. SELECTION-SCREEN END OF LINE.
  62. SELECTION-SCREEN FUNCTION KEY 1.
  63. SELECTION-SCREEN FUNCTION KEY 2.
  64. SELECTION-SCREEN FUNCTION KEY 3.
  65. SELECTION-SCREEN FUNCTION KEY 4.
  66. ************* Parametros
  67. TYPES: TS_COFILE_LINE      LIKE TSTRFCOFIL,
  68.        TT_COFILE_LINES     TYPE TS_COFILE_LINE OCCURS 0.
  69. DATA: ZVRSN LIKE VRSN OCCURS 0 WITH HEADER LINE,
  70.       ZVRSD_OLD LIKE VRSD_OLD OCCURS 0 WITH HEADER LINE,
  71.       PV_DIR_T(1) VALUE 'T',
  72.       ORDEN_LIST LIKE TRSAPNAMES OCCURS 0 WITH HEADER LINE,
  73.       LS_COFILE_HEADER LIKE TSTRFCOFIH,
  74.       LT_COFILE_LINES  TYPE TT_COFILE_LINES WITH HEADER LINE,
  75.       DES(60), AL(3) TYPE N ,AH LIKE AL, DESI(20), DL(1),
  76.       BEGIN OF I_BDCDATA OCCURS 0.
  77.         INCLUDE STRUCTURE BDCDATA.     "Estruct
  78. DATA: END OF I_BDCDATA,
  79.       GEN LIKE ORDEN_LIST OCCURS 0 WITH HEADER LINE,
  80.       ZUSR01 LIKE USR01 OCCURS 0 WITH HEADER LINE,
  81.       ITAB LIKE LT_COFILE_LINES OCCURS 0 WITH HEADER LINE,
  82.       CX TYPE I,
  83.       CH TYPE I,
  84.       CL TYPE I,
  85.       PAR01 LIKE VRSD_OLD-OBJNAME,
  86.       PAR02 LIKE VRSD_OLD-OBJTYPE.
  87.  
  88. INITIALIZATION.
  89.   SELECT SINGLE TRKORR INTO ORDEN FROM E070L WHERE LASTNUM  = 'TRKORR'.
  90.   ORDEN+4(16) = '*'.
  91.   MOVE  'Destination:' TO TXT01.
  92.   MOVE  'Objects:'     TO TXT02.
  93.   MOVE  'Last Order'   TO TXT03.
  94.   MOVE  'OK'           TO TXT04.
  95.   MOVE  'Warning'      TO TXT05.
  96.   MOVE  'ERROR'        TO TXT06.
  97.   MOVE  'New Order-----------------------------------------' TO BOL01.
  98.   MOVE  'Transport Order-----------------------------------' TO BOL2.
  99.   MOVE  'Order Log-----------------------------------------' TO BOL03.
  100.   SSCRFIELDS-FUNCTXT_01 = 'Ordenes'.
  101.   SSCRFIELDS-FUNCTXT_02 = '@4A@'. "ZCET_TRANSXTER
  102.   SSCRFIELDS-FUNCTXT_03 = '@13@ Orden'. "ZCET_TRANSXTER
  103.   SSCRFIELDS-FUNCTXT_04 = 'Solicitud'. "ZCET_TRANSXTER
  104.  
  105. AT LINE-SELECTION.
  106.   IF SY-CUCOL >= 70 AND NOT E07T-AS4TEXT+0(10) IS INITIAL.
  107.      CLEAR I_BDCDATA. REFRESH I_BDCDATA.
  108.       PERFORM DYNPRO USING: 'X' 'SAPMZCET_TRANSTER01'   '1003',
  109.                             ' ' 'BDC_OKCODE' '=ENTE',
  110.                             ' ' 'ZCET_E_HEADER-SOLICITUD'
  111.                             E07T-AS4TEXT+0(10).
  112.       CALL TRANSACTION 'ZCET_TRANSTER03' USING I_BDCDATA MODE 'E'.
  113.   ELSE.
  114.   IF SY-LISEL+05(1) = ' '.
  115.     IF SY-LISEL+14(1) IS INITIAL.
  116.       IF SY-LISEL+30(1) IS INITIAL.
  117.         PERFORM LEE_ORDEN.
  118.       ELSE.
  119.         SUBMIT (SY-REPID) WITH ORDEN = ZVRSD_OLD-KORRNUM AND RETURN.
  120.       ENDIF.
  121.     ELSE.
  122.       SUBMIT RSPUTPRT WITH ACTTYPE = 'G'
  123.                       WITH SYSNAME = LT_COFILE_LINES-TARSYSTEM
  124.                       WITH TRKORR  = ORDEN_LIST-TRKORR
  125.       AND RETURN.
  126.     ENDIF.
  127.   ELSE.
  128.     SUBMIT RDDPROTL WITH PV_DIR_T = 'T'
  129.                     WITH PV_KORR  = SY-LISEL+05(19)
  130.                     WITH PV_TART  = 'WOENRF'
  131.                     WITH PV_USER  = ORDEN_LIST-REP_USER
  132.     AND RETURN.
  133.   ENDIF.
  134.   ENDIF.
  135. AT SELECTION-SCREEN.
  136.    IF SSCRFIELDS-UCOMM = 'FC04'.
  137.       CALL TRANSACTION 'ZCET_TRANSTER03'.
  138.    ENDIF.
  139.    IF  SSCRFIELDS-UCOMM = 'FC03'.
  140.      CLEAR I_BDCDATA. REFRESH I_BDCDATA.
  141.       PERFORM DYNPRO USING: 'X' 'RDDM0002'   '0100',
  142.                             ' ' 'BDC_OKCODE' '=SRCH',
  143.                             'X' 'RDDM0002'   '0100',
  144.                             ' ' 'BDC_OKCODE' '/EBACK'.
  145.       CALL TRANSACTION 'SE09' USING I_BDCDATA MODE 'E'.
  146.    ENDIF.
  147.    IF SSCRFIELDS-UCOMM = 'FC01'.
  148.      CLEAR I_BDCDATA. REFRESH I_BDCDATA.
  149. TYPES: TRWBO_CHARFLAG(1) TYPE C.
  150. TYPES: BEGIN OF TRWBO_SELECTION,
  151.           TRKORRPATTERN LIKE E070-TRKORR,
  152.           STDREQUEST    TYPE TRWBO_CHARFLAG,
  153.           CLIENT        LIKE E070C-CLIENT,
  154.           TARSYSTEM     LIKE E070-TARSYSTEM,
  155.           ALLCLIENTS    TYPE TRWBO_CHARFLAG,
  156.           CATEG_SYST    TYPE TRWBO_CHARFLAG,
  157.           CATEG_CUST    TYPE TRWBO_CHARFLAG,
  158.           REQFUNCTIONS  LIKE TRPARI-W_LONGSTAT,
  159.           REQSTATUS     LIKE TRPARI-W_LONGSTAT,
  160.           TASKFUNCTIONS LIKE TRPARI-W_LONGSTAT,
  161.           TASKSTATUS    LIKE TRPARI-W_LONGSTAT,
  162.           CONNECT_REQ_TASK_CONDITIONS TYPE C,
  163.           SINGLETASKS   TYPE TRWBO_CHARFLAG,
  164.           FREETASKS_F   LIKE TRPARI-W_LONGSTAT,
  165.           FREETASKS_S   LIKE TRPARI-W_LONGSTAT,
  166.           FROMDATE      LIKE E070-AS4DATE,
  167.           TODATE        LIKE E070-AS4DATE,
  168.        END OF  TRWBO_SELECTION.
  169. DATA SELE TYPE TRWBO_SELECTION OCCURS 0 WITH HEADER LINE.
  170.       SELE-TRKORRPATTERN = 'DESK*'.
  171.       SELE-ALLCLIENTS = 'X'.
  172.       SELE-CATEG_SYST = 'X'.
  173.       SELE-CATEG_CUST = 'X'.
  174.       SELE-REQFUNCTIONS = 'ABCDEFKLMOPRSTWX'. "'KLAWTCOEMPDRSXF'.
  175.       SELE-REQSTATUS = 'NODLPA'.
  176.       SELE-FROMDATE = SY-DATUM. SELE-FROMDATE+4(4) = '0101'.
  177.       SELE-TODATE = SY-DATUM.
  178.       APPEND SELE.
  179.       CALL FUNCTION 'TR_SEARCH_AND_DISPLAY_REQUESTS'
  180.           EXPORTING
  181.                IV_USERNAME            = SY-UNAME
  182.                IS_SELECTION           = SELE
  183.                IV_VIA_SELSCREEN       = ' '
  184.            EXCEPTIONS
  185.                 ACTION_ABORTED_BY_USER = 1
  186.                 OTHERS                 = 2.
  187.    ENDIF.
  188.    IF SSCRFIELDS-UCOMM = 'FC02'.
  189.       LEAVE TO TRANSACTION 'ZCET_TRANSTER01'.
  190.    ENDIF.
  191. END-OF-SELECTION.
  192.   CASE 'X'.
  193.     WHEN BOLA1. PERFORM CREAR_ORDEN.
  194.     WHEN BOLA2. PERFORM TRANSPORTA.
  195.     WHEN BOLA3. PERFORM LEE_ORDEN.
  196.   ENDCASE.
  197.  
  198. FORM LEE_ORDEN.                        "Leemos el Log de la Orden
  199.   CLEAR: SY-LSIND, GEN, ZUSR01. REFRESH: GEN, ZUSR01.
  200. * Maldita funcin no se le puede pasar el user en blanco!!!
  201.   IF NOT OBJE IS INITIAL.
  202.      SELECT MAX( TRKORR ) INTO ORDEN FROM E071 WHERE OBJ_NAME = OBJE.
  203.      SELECT SINGLE STRKORR INTO ORDEN FROM  E070 WHERE  TRKORR = ORDEN.
  204.   ENDIF.
  205.   SELECT SINGLE * FROM E070 WHERE TRKORR = ORDEN.
  206.   IF SY-SUBRC NE 0.
  207.     IF NOT SYUNAME IS INITIAL AND SOLICI IS INITIAL.
  208.     SELECT * FROM USR01 INTO TABLE ZUSR01 WHERE BNAME IN SYUNAME.
  209.     CHECK SY-SUBRC EQ 0.
  210.     LOOP AT ZUSR01. "Evitamos DUMPS de Timing
  211.       CLEAR: ORDEN_LIST. REFRESH: ORDEN_LIST.
  212.       CALL FUNCTION 'STRF_ACCESS_SAPNAMES'
  213.            EXPORTING
  214.                 IV_FUNCTION = 'R'      "Ni Idea
  215.                 IV_USER     = ZUSR01-BNAME
  216.                 IV_DIRTYPE  = PV_DIR_T " Vale T
  217.            TABLES
  218.                 TT_SAPNAMES = ORDEN_LIST
  219.            EXCEPTIONS
  220.                 OTHERS      = 1.
  221.       CHECK SY-TFILL GT 0.
  222.       APPEND LINES OF ORDEN_LIST FROM 1 TO SY-TFILL TO GEN.
  223.     ENDLOOP.
  224.     ENDIF.
  225.     ORDEN_LIST[] = GEN[].
  226.     SORT ORDEN_LIST BY TRKORR.
  227.   ELSE.
  228.     IF NOT E070-STRKORR IS INITIAL.
  229.        ORDEN = E070-STRKORR.
  230.     ENDIF.
  231.     ORDEN_LIST-TRKORR = ORDEN. APPEND ORDEN_LIST.
  232.   ENDIF.
  233.   IF NOT SOLICI IS INITIAL.
  234.      SELECT * FROM  ZCET_TR_POSITION WHERE  SOLICITUD IN SOLICI.
  235.         ORDEN_LIST-TRKORR = ZCET_TR_POSITION-TRKORR.
  236.         APPEND ORDEN_LIST.
  237.      ENDSELECT.
  238.      DELETE ADJACENT DUPLICATES FROM ORDEN_LIST.
  239.      SORT ORDEN_LIST BY TRKORR.
  240.   ENDIF.
  241.   LOOP AT ORDEN_LIST.
  242.     IF NOT ORDEN IS INITIAL. CHECK ORDEN_LIST-TRKORR CP ORDEN. ENDIF.
  243.     SELECT SINGLE * FROM E070 WHERE TRKORR = ORDEN_LIST-TRKORR.
  244.     CHECK SY-SUBRC EQ 0.
  245.     IF NOT FLIBERA IS INITIAL.
  246.        CHECK ( E070-TRSTATUS EQ 'R' AND E070-AS4DATE IN FLIBERA ).
  247.     ENDIF.
  248.     IF NOT FCREA IS INITIAL.
  249.        CHECK ( E070-TRSTATUS = 'D' AND E070-AS4DATE IN FCREA ).
  250.     ENDIF.
  251.     CHECK E070-AS4USER IN SYUNAME.
  252.     CALL FUNCTION 'STRF_READ_COFILE'
  253.          EXPORTING
  254.               IV_DIRTYPE     = PV_DIR_T
  255.               IV_TRKORR      = ORDEN_LIST-TRKORR
  256.          IMPORTING
  257.               EV_COFI_HEADER = LS_COFILE_HEADER
  258.          TABLES
  259.               TT_COFI_LINES =
  260.                  LT_COFILE_LINES       "Aqui retorna el listadorrR!!
  261.          EXCEPTIONS
  262.               NO_INFO_FOUND  = 2.
  263.     ITAB[] = LT_COFILE_LINES[].
  264.     CLEAR CL.
  265.     LOOP AT ITAB.
  266. *      if not itab-trdate in flibera.
  267. *         cl = 1. delete itab. continue.
  268. *      endif.
  269.       CLEAR: ITAB-TRTIME, ITAB-FUNCTION. MODIFY ITAB.
  270.     ENDLOOP.
  271. *    if cl = 1. delete orden_list. continue. endif.
  272.     DELETE ADJACENT DUPLICATES FROM ITAB.
  273.     LOOP AT ITAB.
  274.       READ TABLE LT_COFILE_LINES WITH KEY TARSYSTEM = ITAB-TARSYSTEM
  275.                                             RETCODE = ITAB-RETCODE.
  276.       ITAB-TRTIME = LT_COFILE_LINES-TRTIME. MODIFY ITAB.
  277.     ENDLOOP.
  278.     DESCRIBE TABLE ITAB LINES CH.
  279.     IF CH GT 0.
  280.       LOOP AT LT_COFILE_LINES WHERE RETCODE NE 0.
  281.         READ TABLE ITAB WITH KEY TARSYSTEM = LT_COFILE_LINES-TARSYSTEM
  282.                                 RETCODE   = 0.
  283.         IF SY-SUBRC EQ 0.
  284.           DELETE ITAB INDEX SY-TABIX.
  285.         ELSE.
  286.          READ TABLE ITAB WITH KEY TARSYSTEM = LT_COFILE_LINES-TARSYSTEM
  287.                            RETCODE   = LT_COFILE_LINES-RETCODE.
  288.           IF SY-SUBRC EQ 0. DELETE ITAB INDEX SY-TABIX. ENDIF.
  289.         ENDIF.
  290.         ITAB = LT_COFILE_LINES . APPEND ITAB.
  291.       ENDLOOP.
  292.     ENDIF.
  293.     SORT ITAB BY TRDATE TRTIME .
  294.     LT_COFILE_LINES[] = ITAB[].
  295. ** Buscamos aquellas ordenes que no esten en alguna mquina
  296.     IF NOT LESS IS INITIAL.
  297.       READ TABLE LT_COFILE_LINES WITH KEY TARSYSTEM = LESS.
  298.       CHECK SY-SUBRC NE 0.
  299.     ENDIF.
  300. ** Fecha de Liberacin
  301.     IF NOT FCREA IS INITIAL.
  302.       DESCRIBE TABLE LT_COFILE_LINES LINES CH.
  303.       IF CL = 1 AND CH = 0. CONTINUE. ENDIF.
  304.     ENDIF.
  305. **
  306.     CASE ORDEN_LIST-RC.
  307.       WHEN 0. CHECK ERROR_G = 'X'. WRITE: / ICON_GREEN_LIGHT AS ICON.
  308.       WHEN 4. CHECK ERROR_Y = 'X'. WRITE: / ICON_YELLOW_LIGHT AS ICON.
  309.       WHEN OTHERS. CHECK ERROR_R = 'X'. WRITE: / ICON_RED_LIGHT AS ICON.
  310.     ENDCASE.
  311.     SELECT SINGLE * FROM E07T WHERE TRKORR = ORDEN_LIST-TRKORR
  312.                                  AND LANGU = SY-LANGU.
  313.     FORMAT COLOR COL_KEY ON.
  314.     WRITE: AT 006 ORDEN_LIST-TRKORR HOTSPOT ON,
  315.            AT 025 LS_COFILE_HEADER-TRUSER NO-GAP,
  316.                   E07T-AS4TEXT.
  317. *---- Slo para el cliente con transportes de solicitud.
  318.         SELECT MAX( SOLICITUD ) INTO E07T-AS4TEXT FROM
  319.                                         ZCET_TR_POSITION
  320.                             WHERE TRKORR = ORDEN_LIST-TRKORR.
  321.         IF SY-SUBRC EQ 0 AND NOT E07T-AS4TEXT IS INITIAL.
  322.            WRITE: E07T-AS4TEXT+0(10) COLOR COL_TOTAL NO-GAP HOTSPOT ON.
  323.            HIDE E07T-AS4TEXT+0(10).
  324.         ENDIF.
  325. *---- Slo para el cliente con transportes de solicitud.
  326.     FORMAT COLOR COL_KEY OFF.
  327.     IF DEST = 'X'.
  328.       LOOP AT LT_COFILE_LINES.
  329.         CLEAR DD07T.
  330.         IF NOT LT_COFILE_LINES-FUNCTION IS INITIAL.
  331.           SELECT SINGLE DDTEXT INTO DD07T-DDTEXT FROM DD07T
  332.               WHERE  DOMNAME    = 'TRBATFUNC' " Dominio de las func.
  333.               AND    DDLANGUAGE = SY-LANGU
  334.               AND    AS4LOCAL   = 'A'
  335.               AND    AS4VERS    = '0000'
  336.               AND    DOMVALUE_L = LT_COFILE_LINES-FUNCTION.
  337.         ENDIF.
  338.         CASE LT_COFILE_LINES-RETCODE.
  339.           WHEN 0.      WRITE: AT /010 ICON_GREEN_LIGHT  AS ICON.
  340.           WHEN 4.      WRITE: AT /010 ICON_YELLOW_LIGHT AS ICON.
  341.           WHEN OTHERS. WRITE: AT /010 ICON_RED_LIGHT    AS ICON.
  342.         ENDCASE.
  343.         WRITE: LT_COFILE_LINES-TARSYSTEM HOTSPOT ON,
  344.                LT_COFILE_LINES-TRDATE,
  345.                LT_COFILE_LINES-TRTIME,
  346.                LT_COFILE_LINES-HOST, DD07T-DDTEXT+0(20).
  347.         HIDE: ORDEN_LIST, LT_COFILE_LINES.
  348. *---- Slo para el cliente con transportes de solicitud.
  349.         SELECT MAX( SOLICITUD ) INTO E07T-AS4TEXT FROM
  350.                                         ZCET_TR_POSITION
  351.                             WHERE TRKORR = ORDEN_LIST-TRKORR." and
  352. *                                  sysnam = lt_cofile_lines-tarsystem.
  353.         IF SY-SUBRC EQ 0 AND NOT E07T-AS4TEXT IS INITIAL.
  354.            WRITE: E07T-AS4TEXT+0(10) COLOR COL_TOTAL NO-GAP HOTSPOT ON.
  355.            HIDE E07T-AS4TEXT+0(10).
  356.         ENDIF.
  357. *---- Slo para el cliente con transportes de solicitud.
  358.       ENDLOOP.
  359.     ENDIF.
  360.     IF OBJ = 'X'.
  361.       FORMAT INTENSIFIED OFF.
  362.       SELECT * FROM E071 WHERE TRKORR EQ ORDEN_LIST-TRKORR.
  363. "                             object ne 'RELE'. "- Eliminos la cabecera
  364.         IF E071-OBJECT = 'RELE'.
  365.            WRITE: /20 E071-OBJ_NAME(40).
  366.            CONTINUE.
  367.         ENDIF.
  368.         WRITE: /020 E071-PGMID,
  369.                     E071-OBJECT,
  370.                     E071-OBJ_NAME(40),
  371.                     E071-OBJFUNC,
  372.                     E071-LOCKFLAG,
  373.                     E071-GENNUM.
  374.         HIDE: ORDEN_LIST, LT_COFILE_LINES.
  375. ** Vemos si ha sido incluido en una versin superior
  376.         IF FLASTKR = 'X'.
  377.           PAR01 = E071-OBJ_NAME.
  378.           PAR02 = E071-OBJECT.
  379.           REFRESH: ZVRSD_OLD. CLEAR: ZVRSD_OLD.
  380.           IF PAR02 NE 'MESS' AND PAR02 NE 'FUGT' AND
  381.              PAR02 NE 'ADIR'.
  382. * Hay que evitar los messages, ya que provocan un DUMP en la func
  383.             CALL FUNCTION 'SVRS_GET_VERSION_DIRECTORY'
  384.                  EXPORTING
  385.                       OBJNAME      = PAR01
  386.                       OBJTYPE      = PAR02
  387.                  TABLES
  388.                       LVERSNO_LIST = ZVRSN
  389.                       VERSION_LIST = ZVRSD_OLD
  390.                  EXCEPTIONS
  391.                       NO_ENTRY     = 1
  392.                       OTHERS       = 2.
  393.           ELSE.
  394.             SY-SUBRC = 4.
  395.           ENDIF.
  396.           IF SY-SUBRC EQ 0.
  397.             LOOP AT ZVRSD_OLD WHERE VERSNO GT 0.
  398.               IF ZVRSD_OLD-KORRNUM NE ORDEN_LIST-TRKORR.
  399.                  WRITE: /030 'Last order up:',
  400.                              ZVRSD_OLD-KORRNUM HOTSPOT ON,
  401.                              ZVRSD_OLD-DATUM,
  402.                              ZVRSD_OLD-ZEIT.
  403.                  HIDE ZVRSD_OLD-KORRNUM.
  404.               ENDIF.
  405.               EXIT.
  406.             ENDLOOP.
  407.           ENDIF.
  408.         ENDIF.
  409. **
  410.       ENDSELECT.
  411.       FORMAT INTENSIFIED ON.
  412.     ENDIF.
  413.     SKIP 1.
  414.   ENDLOOP.
  415. ENDFORM.
  416.  
  417. FORM DYNPRO USING VALUE(#_DYNBEGIN) VALUE(#_NAME) VALUE(#_VALUE).
  418.   CLEAR I_BDCDATA.
  419.   IF NOT #_DYNBEGIN IS INITIAL.
  420.     I_BDCDATA-PROGRAM  = #_NAME.
  421.     I_BDCDATA-DYNPRO   = #_VALUE.
  422.     I_BDCDATA-DYNBEGIN = #_DYNBEGIN.
  423.   ELSE.
  424.     I_BDCDATA-FNAM     = #_NAME.
  425.     I_BDCDATA-FVAL     = #_VALUE.
  426.   ENDIF.
  427.   APPEND I_BDCDATA.
  428. ENDFORM.                               "dynpro
  429.  
  430. FORM PREGUNTA_ORDEN.
  431.   DATA: TERELU(12).
  432.   WHILE USUARI IS INITIAL.
  433.     CALL FUNCTION 'POPUP_TO_GET_VALUE'
  434.          EXPORTING
  435.               FIELDNAME           = 'UNAME'
  436.               TABNAME             = 'SYST'
  437.               TITEL               = 'Seleccionar usuario'
  438.               VALUEIN             = '            '  "Ojo al DATO!!
  439.          IMPORTING
  440.               ANSWER              = DL
  441.               VALUEOUT            = TERELU
  442.          EXCEPTIONS
  443.               FIELDNAME_NOT_FOUND = 1
  444.               OTHERS              = 2.
  445.     CHECK DL NE 'C'.
  446.     USUARI = TERELU.
  447.   ENDWHILE.
  448. ENDFORM.
  449.  
  450. FORM CREAR_ORDEN.
  451.   CLEAR I_BDCDATA. REFRESH I_BDCDATA.
  452.   PERFORM PREGUNTA_ORDEN.
  453.   SELECT SINGLE * FROM USR01 WHERE BNAME = USUARI.
  454.   CHECK SY-SUBRC EQ 0.
  455.   WRITE SY-DATUM TO DES.
  456. ** Esta parte es opcional...
  457.   IF SY-UNAME = YOSOY.
  458.     CONCATENATE ESTOY DES INTO DES SEPARATED BY ' '.
  459.   ELSE.
  460.     CONCATENATE 'MAD.' DES INTO DES SEPARATED BY ' '.
  461.   ENDIF.
  462. **
  463.   CONCATENATE PROYECTO DES DESC INTO DES SEPARATED BY ' '.
  464.   AL = STRLEN( NOM ) + 2.
  465.   AH = 60 - AL.
  466.   CONCATENATE '[' NOM ']' INTO DESI.
  467.   CONDENSE DES.
  468.   MOVE DESI TO DES+AH(AL).
  469.   PERFORM DYNPRO USING: 'X' 'RDDM0002'         '0100',
  470.                         ' ' 'BDC_OKCODE'       '=ENTR',
  471.                         'X' 'SAPMSSY0'         '0120',
  472.                         ' ' 'BDC_OKCODE'       '=ADDO',
  473.                         ' ' 'BDC_CURSOR'       '06/21',
  474.                         'X' 'SAPLSTR8'         '0102',
  475.                         ' ' 'BDC_OKCODE'       '=CREA',
  476.                         ' ' 'BDC_CURSOR'       'GT_TASKS-USER(01)',
  477.                         ' ' 'KO013-TRKORR_T'    DES,
  478.                         ' ' 'GT_TASKS-USER(01)' USUARI.
  479.   IF NOT FELIPE IS INITIAL.
  480.     PERFORM DYNPRO USING: ' ' 'GT_TASKS-USER(02)' FELIPE.
  481.   ENDIF.
  482.   PERFORM DYNPRO USING: 'X' 'SAPMSSY0'          '0120',
  483.                         ' ' 'BDC_OKCODE'        '=TRRT',
  484.                         'X' 'RDDM0002'          '0100',
  485.                         ' ' 'BDC_OKCODE'        '/EBACK'.
  486.   DL = 'E'.
  487.   CALL TRANSACTION 'SE09' USING I_BDCDATA MODE DL.
  488.   CHECK SY-SUBRC EQ 0.
  489.   SELECT SINGLE * FROM E070L WHERE LASTNUM = 'TRKORR'.
  490.   IF NOT USUARI IS INITIAL. SUBTRACT 1 FROM E070L-TRKORR+4(6). ENDIF.
  491.   IF NOT FELIPE IS INITIAL. SUBTRACT 1 FROM E070L-TRKORR+4(6). ENDIF.
  492.   DATA KK LIKE SM04DIC-POPUPMSG.
  493.   CONCATENATE 'Orden' E070L-TRKORR
  494.               'creada:' DES INTO KK SEPARATED BY ' '.
  495.   PERFORM MESI USING KK.
  496.   LEAVE PROGRAM.
  497. ENDFORM.
  498.  
  499. FORM TRANSPORTA.
  500.   DATA: BEGIN OF SXPGCOMTAB_INTERNAL OCCURS 0.
  501.           INCLUDE STRUCTURE SXPGCOTABE.
  502.   DATA:   TYPE(8) TYPE C ,
  503.           MODIFIED(1) TYPE C ,
  504.         END OF SXPGCOMTAB_INTERNAL,
  505.         EXITSTAT LIKE EXTCMDEXEX-EXITCODE,
  506.         BEGIN OF SXPGCOMTAB_KEY OCCURS 0.
  507.           INCLUDE STRUCTURE SXPGCOMTAB_INTERNAL.
  508.   DATA: END OF SXPGCOMTAB_KEY,
  509.         ADDITIONAL_PARAMETERS LIKE SXPGCOLIST-PARAMETERS,
  510.         BEGIN OF RESULT_TAB OCCURS 0.
  511.           INCLUDE STRUCTURE BTCXPM.
  512.   DATA: END OF RESULT_TAB.
  513.   PERFORM PREGUNTA_ORDEN.
  514.   ADDITIONAL_PARAMETERS = ADDPARAM.
  515.   CLEAR SXPGCOMTAB_KEY. REFRESH SXPGCOMTAB_KEY.
  516.   SELECT * FROM SXPGCOSTAB INTO TABLE SXPGCOMTAB_KEY
  517.                                 WHERE NAME = CMDNAME.
  518.   CHECK SY-SUBRC EQ 0.
  519.   READ TABLE SXPGCOMTAB_KEY INDEX 1.
  520.   DATA: TS LIKE  RFCDISPLAY-RFCHOST.
  521.   TS = SY-HOST.
  522.   CALL FUNCTION 'SXPG_COMMAND_EXECUTE'
  523.   EXPORTING
  524.      COMMANDNAME                   = SXPGCOMTAB_KEY-NAME
  525.      OPERATINGSYSTEM               = SXPGCOMTAB_KEY-OPSYSTEM
  526.      TARGETSYSTEM                  = TS
  527.      ADDITIONAL_PARAMETERS         = ADDITIONAL_PARAMETERS
  528.   IMPORTING
  529.      EXITCODE                      = EXITSTAT
  530.   TABLES
  531.      EXEC_PROTOCOL                 = RESULT_TAB
  532.   EXCEPTIONS
  533.      NO_PERMISSION                 = 1
  534.      COMMAND_NOT_FOUND             = 2
  535.      PARAMETERS_TOO_LONG           = 3
  536.      SECURITY_RISK                 = 4
  537.      WRONG_CHECK_CALL_INTERFACE    = 5
  538.      PROGRAM_START_ERROR           = 6
  539.      PROGRAM_TERMINATION_ERROR     = 7
  540.      X_ERROR                       = 8
  541.      PARAMETER_EXPECTED            = 9
  542.      TOO_MANY_PARAMETERS           = 10
  543.      ILLEGAL_COMMAND               = 11
  544.      WRONG_ASYNCHRONOUS_PARAMETERS = 12
  545.      CANT_ENQ_TBTCO_ENTRY          = 13
  546.      JOBCOUNT_GENERATION_ERROR     = 14
  547.      OTHERS                        = 15.
  548.   IF SY-SUBRC NE 0.
  549.      LOOP AT RESULT_TAB. WRITE: / RESULT_TAB-MESSAGE. ENDLOOP. EXIT.
  550.   ENDIF.
  551.   DATA KK LIKE SM04DIC-POPUPMSG.
  552.   LOOP AT RESULT_TAB WHERE MESSAGE NP '*tp finished with return code:*'.
  553.     DELETE RESULT_TAB.
  554.   ENDLOOP.
  555.   DELETE ADJACENT DUPLICATES FROM RESULT_TAB.
  556.   LOOP AT RESULT_TAB.
  557.     CONCATENATE 'Orden finalizada:' ADDITIONAL_PARAMETERS
  558.                 RESULT_TAB-MESSAGE INTO KK SEPARATED BY ' '.
  559.     PERFORM MESI USING KK.
  560.   ENDLOOP.
  561. ENDFORM.
  562.  
  563. FORM MESI USING TESTO LIKE SM04DIC-POPUPMSG.
  564. DATA: TXT(200).
  565.    TXT = TESTO.
  566.    MESSAGE S398(00) WITH TXT+0(49) TXT+49(49) TXT+99(49) TXT+149(49).
  567.    CHECK USUARI NE SY-UNAME.
  568.    CALL FUNCTION 'TH_POPUP'
  569.       EXPORTING
  570.          CLIENT         = SY-MANDT
  571.          USER           = USUARI
  572.          MESSAGE        = TESTO
  573.       EXCEPTIONS
  574.          USER_NOT_FOUND = 1
  575.          OTHERS         = 2.
  576. ENDFORM.