Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

(hr)problem with time-event upload

Former Member
0 Likes
1,881

hi friends, flowing codes like rpteup10 program. but we changed it. (december 2005) . but now there is problem not working . it is writing done but infotype 2011 from pa20 there is no change. maybe problem is fm HR_CC1_TIMEEVENT_INSERT. please help me.

note sorry for my english.


report rpteup10 no standard page heading.


* Die Struktur der eingelesenen Saetze ist in der Feldleiste EXTREC
* beschrieben.
* Die Umsetzung der Saetze in die Struktur TIMEEVENT erfolgt in FORM
* SET_EXTREC_TO_TIMEEVENT. Die Zuweisung erfolgt an die Feldleiste
* timeevent.
*
* The structure of the imported records is described in the internal
* structure EXTREC.
* The transport of the imported records into the structure TIMEEVENT
* is done in FORM SET_EXTREC_TO_TIMEEVENT.

tables: teven.

data: begin of extrec occurs 0.
        include structure z1hrkk1teup.
data: end of extrec.

data: timeevent like cc1_timeevent occurs 0 with header line.

data: last_timeevent like cc1_timeevent.

data: skipped_timeevent like cc1_timeevent occurs 0 with header line.

data: begin of stat occurs 1,
        ldate like teven-ldate,
        anzhl(4) type p value 1,
      end of stat.

data: l_posted_timeevents   like sy-dbcnt,
      l_faulty_timeevents   like sy-dbcnt,
      l_locked_timeevents   like sy-dbcnt,
      l_total_timeevents    like sy-dbcnt,
      l_uploaded_timeevents like sy-dbcnt,
      l_skipped_timeevents  like sy-dbcnt.                  "P40K025970

data: msg(100).

* Syntax von MASKE siehe Doku FB WS_FILENAME_GET
data: begin of maske,
        ',',
        f01(30),
        ',',
        '*.txt',
        ',',
        f02(30),
        ',',
        '*.*',
        '.',
      end of maske.


selection-screen begin of block quelle with frame title text-src.
* Pushbuttons for selection of source
selection-screen begin of line.
parameters:
  dataset like rptxxxxx-kr_feld1
    radiobutton group g001 default 'X'.
selection-screen comment 03(30) text-010.
parameters:
     file like rptaxxxx-rfile default '/usr/sap/up.tmp'.
selection-screen end of line.
selection-screen begin of line.
parameters:
   workstn like rptxxxxx-kr_feld1
      radiobutton group g001.
selection-screen comment 03(30) text-011.
parameters:
     name like rlgrap-filename default 'A:UPLOAD.TXT'.
selection-screen end of line.

selection-screen end of block quelle.

selection-screen begin of block frm1 with frame title text-par.

parameters:
     upload like rptxxxxx-kr_feld1 default 'X',
     update like cc1par-x_verb default 'X',
     protokol like rptxxxxx-kr_feld2 default 'X'.
selection-screen end of block frm1.



*---------------------------------------------------------------------*
*                      AT SELECTION-SCREEN                            *
*---------------------------------------------------------------------*
at selection-screen.


*---------------------------------------------------------------------*
*            AT SELECTION-SCREEN ON VALUE-REQUEST FOR ...             *
*---------------------------------------------------------------------*
at selection-screen on value-request for name.
  call function 'WS_FILENAME_GET'
       exporting
*           DEF_FILENAME     = 'hallo'
            def_path         = 'C:'
            mask             = maske
*           MODE             = 'O'
*           TITLE            = ' '
       importing
            filename         = name
*           RC               =
      exceptions
            inv_winsys       = 1
            no_batch         = 2
            selection_cancel = 3
            selection_error  = 4
            others           = 5.

* end of -------------------------------------------------- "P30K108491


initialization.


start-of-selection.

  perform check_parameters.

  if not workstn is initial.

    call function 'WS_UPLOAD'
           exporting
                filename            = name
                filetype            = 'ASC'
           tables
                data_tab            =  extrec
         exceptions
              conversion_error    = 1
*         FILE_OPEN_ERROR     = 2
              file_read_error     = 3
              invalid_table_width = 4
              invalid_type        = 5
              no_batch            = 6
              unknown_error       = 7
              others              = 8.
    if sy-subrc eq 2.
      write: / 'Fehlerhafter Pfadname'(013).
    endif.

  elseif not dataset is initial.

    open dataset file for input message msg.
    if sy-subrc ne 0.
      write: / msg.
      stop.
    endif.
    do.
      read dataset file into extrec.
      if sy-subrc ne 0. exit. endif.
      append extrec.
    enddo.

  else.

* Nur zum Testen
    extrec-zausw = '10005301'.
    extrec-satza = 'P10'.
    extrec-ldate = sy-datum.
    extrec-ltime = '120000'.
*    extrec-otype = 'S '.
*    extrec-plans = '12345678'.
*    extrec-usrup = 'VIELZWECKFELD'.
    append extrec.
    extrec-ltime = '140000'.
    extrec-satza = 'Z10'.
    append extrec.

  endif.

  loop at extrec.
    check not extrec is initial.
    perform set_extrec_to_timeevent.
    perform append_timeevent.
    perform fill_stat.
  endloop.

*for double entry
  CLEAR SKIPPED_TIMEEVENT. REFRESH SKIPPED_TIMEEVENT.
  LOOP AT TIMEEVENT.
  SELECT SINGLE * FROM TEVEN WHERE PERNR = TIMEEVENT-PERNR AND
                                   LDATE = TIMEEVENT-LDATE AND
                                   LTIME = TIMEEVENT-LTIME AND
                                   SATZA = TIMEEVENT-SATZA AND
                                   STOKZ = ''.
  IF SY-SUBRC EQ 0.
    MOVE-CORRESPONDING TIMEEVENT TO SKIPPED_TIMEEVENT.
    APPEND SKIPPED_TIMEEVENT.
    DELETE TIMEEVENT.
  ENDIF.
  ENDLOOP.


  if protokol eq 'X'.
    perform show_timeevent.
    perform show_skipped_timeevent.
  endif.

  if upload eq 'X'.
    describe table timeevent lines sy-tfill.
    if not timeevent[] is initial.

      perform get_numbers.

      call function 'HR_CC1_TIMEEVENT_INSERT'
           tables
                timeevent = timeevent
           exceptions
                others    = 1.
      commit work.

      describe table timeevent lines l_uploaded_timeevents.
    endif.
  endif.

  if update eq 'X'.

    call function 'HR_CC1_TIMEEVENT_POST'
         importing
              posted_timeevents  = l_posted_timeevents
              faulty_timeevents  = l_faulty_timeevents
              locked_timeevents  = l_locked_timeevents
              skipped_timeevents = l_skipped_timeevents     "P40K026655
         exceptions
              others            = 0.

*       Zeitpunkt zur Steuerung der Batchverarbeitung setzen
*   GET TIME.
*   start_datum = sy-datum.
*   start_uzeit = sy-uzeit + 10.
*       Übergabe Steuerungsparameter an Task-handler -> BATCH !
*   CALL FUNCTION 'START_OF_BACKGROUNDTASK'
*        EXPORTING
*             startdate = start_datum
*             starttime = start_uzeit
*        EXCEPTIONS
*             others    = 1.
    commit work.
  endif.

* PERFORM show_stat.
  perform show_verarbeitung.

*=====================================================================*

*---------------------------------------------------------------------*
*    FORM SET_EXTREC_TO_TIMEEVENT                                     *
*---------------------------------------------------------------------*
*       Hier ist gegebenenfalls Sondercoding erforderlich.            *
*---------------------------------------------------------------------*
form set_extrec_to_timeevent.
* Nutzdaten
  move-corresponding extrec to timeevent.
*  move: extrec-otype to timeevent-pdc_otype,
*        extrec-plans to timeevent-pdc_plans,
*        extrec-usrup to timeevent-pdc_usrup.
* technische Felder
  timeevent-indeu = 'I'.
endform.

*---------------------------------------------------------------------*
*       FORM APPEND_timeevent.
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form append_timeevent.
*  IF sorted EQ 'X'.
** Die Sätze sind nach Ausweisnummer gruppiert,
** performant: nur den letzten Satz vergleichen.
*    IF timeevent-zausw EQ last_timeevent-zausw AND
*       timeevent-ldate EQ last_timeevent-ldate AND
*       timeevent-ltime EQ last_timeevent-ltime AND
*       timeevent-erdat EQ last_timeevent-erdat AND
*       timeevent-ertim EQ last_timeevent-ertim .
*      DESCRIBE TABLE timeevent LINES sy-tfill.
*      MODIFY timeevent INDEX sy-tfill.
*      skipped_timeevent = last_timeevent.
*      APPEND skipped_timeevent.
*    ELSE.
*      APPEND timeevent.
*    ENDIF.
*    last_timeevent = timeevent.
*  ELSE.
* Die Sätze sind nicht sortiert,
* immer mit allen vorhandenen Sätzen vergleichen.
    read table timeevent into last_timeevent
                      with key  zausw = timeevent-zausw
                                ldate = timeevent-ldate
                                ltime = timeevent-ltime
                                erdat = timeevent-erdat
                                ertim = timeevent-ertim
                      binary search.
    if sy-subrc eq 0.
* Früherer Eintrag wird protokolliert und überschrieben.
      modify timeevent index sy-tabix.
      skipped_timeevent = last_timeevent.
      append skipped_timeevent.
    else.
      insert timeevent index sy-tabix.
    endif.
*  ENDIF.
endform.

*---------------------------------------------------------------------*
*       FORM CHECK_PARAMETERS                                         *
*---------------------------------------------------------------------*
form check_parameters.
  if file eq space.
    write: / 'Bitte Namen für seq. Datenbestand angeben'(e01).
    stop.
  endif.
endform.

*---------------------------------------------------------------------*
*       FORM FILL_STAT                                                *
*---------------------------------------------------------------------*
form fill_stat.
  read table stat with key timeevent-ldate binary search.
  if sy-subrc eq 0.
    add 1 to stat-anzhl.
    modify stat index sy-tabix.
  else.
    move timeevent-ldate to stat-ldate.
    move 1 to stat-anzhl.
    insert stat index sy-tabix.
  endif.
endform.

*---------------------------------------------------------------------*
*       FORM SHOW_STAT                                                *
*---------------------------------------------------------------------*
form show_stat.
  skip 1.
  summary.
  format color col_background intensified.
  write:    'Statistik                     '(s06)
            color col_background intensified off.
  write: /(23)  sy-uline.
  format color col_heading.
  write: / sy-vline no-gap.
  write:  (10) 'Datum     '(s07) no-gap.
  write:   sy-vline no-gap.
  write:   (10) 'Sätze     '(s10) no-gap.
  write:   sy-vline.
  write: /(23) sy-uline.
  loop at stat.
    write: /  sy-vline no-gap.
    format color col_key.
    write:    stat-ldate no-gap.
    write:    sy-vline no-gap.
    format color col_normal.
    write: (10) stat-anzhl no-gap.
    write:    sy-vline no-gap.
  endloop.
  write: /(23) sy-uline.
endform.

*---------------------------------------------------------------------*
*       FORM SHOW_VERARBEITUNG                                        *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form show_verarbeitung.
  l_total_timeevents = l_posted_timeevents +
                       l_faulty_timeevents +
                       l_locked_timeevents.
  skip 1.
  summary.
  format color col_background intensified.
  write:    'Verarbeitung                  '(par)
            color col_background intensified off.
  write: /(78)  sy-uline.
  format color col_heading.
  write: / sy-vline no-gap.
  write:  (65) ' ' no-gap.
  write:   sy-vline no-gap.
  write:   (10) 'Sätze     '(s10) no-gap.
  write:   sy-vline.
  write: /(78) sy-uline.

  write: /  sy-vline no-gap.
  format color col_key.
  write: (65) 'in Schnittstelle gestellt'(v01) no-gap.
  write:    sy-vline no-gap.
  format color col_normal.
  write: (10) l_uploaded_timeevents no-gap.
  write:    sy-vline no-gap.
  write: /  sy-vline no-gap.
  format color col_key.
  write: (65) 'aus Schnittstelle gelesen'(v02)  no-gap.
  write:    sy-vline no-gap.
  format color col_normal.
  write: (10) l_total_timeevents no-gap.
  write:    sy-vline no-gap.
  write: /  sy-vline no-gap.
  format color col_key.
  write: (65) 'in Zeitwirtschaft verbucht'(v03)  no-gap.
  write:    sy-vline no-gap.
  format color col_normal.
  write: (10) l_posted_timeevents no-gap.
  write:    sy-vline no-gap.
  write: /  sy-vline no-gap.
  format color col_key.
  write: (65) 'in Fehlervorrat gestellt'(v04)    no-gap.
  write:    sy-vline no-gap.
  format color col_normal.
  write: (10) l_faulty_timeevents no-gap.
  write:    sy-vline no-gap.
  write: /  sy-vline no-gap.
  format color col_key.
  write: (65)
         'in Schnittstelle belassen, da Personalnummer gesperrt'(v05)
         no-gap.
  write:    sy-vline no-gap.
  format color col_normal.
  write: (10) l_locked_timeevents no-gap.
  write:    sy-vline no-gap.
  write: /  sy-vline no-gap.                                "P40K026655
  format color col_key.                                     "P40K026655
  write: (65) 'durch Zeitwirtschaft verworfen'(v06) no-gap. "P40K026655
  write:    sy-vline no-gap.                                "P40K026655
  format color col_normal.                                  "P40K026655
  write: (10) l_skipped_timeevents no-gap.                  "P40K026655
  write:    sy-vline no-gap.                                "P40K026655
  write: /(78) sy-uline.
endform.

*---------------------------------------------------------------------*
*    FORM SHOW_timeevent                                              *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form show_timeevent.
  summary.
  format color col_background intensified.
  write:    'Protokoll                     '(s08)
            color col_background intensified off.
  write: /(78) sy-uline.
  format color col_heading.
  write: / sy-vline no-gap.
  write: (10) 'PersNr.   '(001) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Zeitausw. '(002) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Datum     '(003) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Uhrzeit   '(004) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Satzart   '(005) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Terminal  '(006) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'An/Abw    '(007) no-gap.
  write:   sy-vline no-gap.
  write: /(78) sy-uline.
  format color col_normal.
  loop at timeevent.
    write: / sy-vline no-gap.
    write: (10) timeevent-pernr no-zero no-gap,
                sy-vline no-gap,
           (10) timeevent-zausw no-zero no-gap,
                sy-vline no-gap,
           (10) timeevent-ldate no-gap,
                sy-vline no-gap,
           (10) timeevent-ltime no-gap,
                sy-vline no-gap,
           (10) timeevent-satza no-gap,
                sy-vline no-gap,
           (10) timeevent-terid no-gap,
                sy-vline no-gap,
           (10) timeevent-abwgr no-gap,
                sy-vline no-gap.
  endloop.
  write: /(78) sy-uline.
endform.

*---------------------------------------------------------------------*
*       FORM SHOW_SKIPPED_timeevent                                   *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form show_skipped_timeevent.
  check not skipped_timeevent[] is initial.
  skip 1.
  summary.
  format color col_background intensified.
* WRITE:    'Überschriebene Sätze'(s09)                     "P40K026655
  write:    'Überlesene doppelte Sätze'(s09)                "P40K026655
            color col_background intensified off.
  write: /(78) sy-uline.
  format color col_heading.
  write: / sy-vline no-gap.
  write: (10) 'PersNr.   '(001) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Zeitausw. '(002) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Datum     '(003) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Uhrzeit   '(004) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Satzart   '(005) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Terminal  '(006) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'An/Abw    '(007) no-gap.
  write:   sy-vline no-gap.
  write: /(78) sy-uline.
  format color col_normal.
  loop at skipped_timeevent into timeevent.
    write: / sy-vline no-gap.
    write: (10) timeevent-pernr no-zero no-gap,
                sy-vline no-gap,
           (10) timeevent-zausw no-zero no-gap,
                sy-vline no-gap,
           (10) timeevent-ldate no-gap,
                sy-vline no-gap,
           (10) timeevent-ltime no-gap,
                sy-vline no-gap,
           (10) timeevent-satza no-gap,
                sy-vline no-gap,
           (10) timeevent-terid no-gap,
                sy-vline no-gap,
           (10) timeevent-abwgr no-gap,
                sy-vline no-gap.
  endloop.
  write: /(78) sy-uline.
endform.

*---------------------------------------------------------------------*
*       FORM GET_NUMBERS                                              *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form get_numbers.
  data: retcd  like inri-returncode,
        quantity_wanted like inri-quantity,
        number          like pdsnr-pdsnr,
        object like inri-object      value 'PD_SEQ_NR',
        range  like inri-nrrangenr   value '01',
        quantity_get    like inri-quantity .
  describe table timeevent lines quantity_wanted.
  check quantity_wanted gt 0.
  call function 'NUMBER_GET_NEXT'
       exporting
            object                  = object
            nr_range_nr             = range
            quantity                = quantity_wanted
       importing
            returncode              = retcd
            number                  = number
            quantity                = quantity_get
       exceptions
            object_not_found        = 1
            interval_not_found      = 2
            number_range_not_intern = 3.
  case sy-subrc.
    when 0.
      case retcd.
        when 1.                        "kritischer Bereich
          message w093(53) with object number.
        when 2.                        "erschöpft
          message e094(53) with object number.
        when 3.                        "erschöpft
          message e094(53) with object number.
      endcase.
    when 1.                            "Objekt nicht angelegt
      message a090(53) with object.
    when 2.                            "Intervall nicht angelegt
      message a091(53) with object number.
    when 3.                            "Intervall nicht intern
      message a092(53) with object number.
  endcase.
  loop at timeevent.
    timeevent-pdsnr = number - quantity_wanted + sy-tabix.
    modify timeevent.
  endloop.
  commit work.
endform.

Message was edited by:

Fatih AYDIN

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,332

Hi Faith,

there has been lot many changes in the time programs during SAP upgrades. Can you just revisit and see if you still require your changes.

Regards,

Atish

hi friends, flowing codes like rpteup10 program. but we changed it. (december 2005) . but now there is problem not working . it is writing done but infotype 2011 from pa20 there is no change. maybe problem is fm HR_CC1_TIMEEVENT_INSERT. please help me.

note sorry for my english.


report rpteup10 no standard page heading.


* Die Struktur der eingelesenen Saetze ist in der Feldleiste EXTREC
* beschrieben.
* Die Umsetzung der Saetze in die Struktur TIMEEVENT erfolgt in FORM
* SET_EXTREC_TO_TIMEEVENT. Die Zuweisung erfolgt an die Feldleiste
* timeevent.
*
* The structure of the imported records is described in the internal
* structure EXTREC.
* The transport of the imported records into the structure TIMEEVENT
* is done in FORM SET_EXTREC_TO_TIMEEVENT.

tables: teven.

data: begin of extrec occurs 0.
        include structure z1hrkk1teup.
data: end of extrec.

data: timeevent like cc1_timeevent occurs 0 with header line.

data: last_timeevent like cc1_timeevent.

data: skipped_timeevent like cc1_timeevent occurs 0 with header line.

data: begin of stat occurs 1,
        ldate like teven-ldate,
        anzhl(4) type p value 1,
      end of stat.

data: l_posted_timeevents   like sy-dbcnt,
      l_faulty_timeevents   like sy-dbcnt,
      l_locked_timeevents   like sy-dbcnt,
      l_total_timeevents    like sy-dbcnt,
      l_uploaded_timeevents like sy-dbcnt,
      l_skipped_timeevents  like sy-dbcnt.                  "P40K025970

data: msg(100).

* Syntax von MASKE siehe Doku FB WS_FILENAME_GET
data: begin of maske,
        ',',
        f01(30),
        ',',
        '*.txt',
        ',',
        f02(30),
        ',',
        '*.*',
        '.',
      end of maske.


selection-screen begin of block quelle with frame title text-src.
* Pushbuttons for selection of source
selection-screen begin of line.
parameters:
  dataset like rptxxxxx-kr_feld1
    radiobutton group g001 default 'X'.
selection-screen comment 03(30) text-010.
parameters:
     file like rptaxxxx-rfile default '/usr/sap/up.tmp'.
selection-screen end of line.
selection-screen begin of line.
parameters:
   workstn like rptxxxxx-kr_feld1
      radiobutton group g001.
selection-screen comment 03(30) text-011.
parameters:
     name like rlgrap-filename default 'A:UPLOAD.TXT'.
selection-screen end of line.

selection-screen end of block quelle.

selection-screen begin of block frm1 with frame title text-par.

parameters:
     upload like rptxxxxx-kr_feld1 default 'X',
     update like cc1par-x_verb default 'X',
     protokol like rptxxxxx-kr_feld2 default 'X'.
selection-screen end of block frm1.



*---------------------------------------------------------------------*
*                      AT SELECTION-SCREEN                            *
*---------------------------------------------------------------------*
at selection-screen.


*---------------------------------------------------------------------*
*            AT SELECTION-SCREEN ON VALUE-REQUEST FOR ...             *
*---------------------------------------------------------------------*
at selection-screen on value-request for name.
  call function 'WS_FILENAME_GET'
       exporting
*           DEF_FILENAME     = 'hallo'
            def_path         = 'C:'
            mask             = maske
*           MODE             = 'O'
*           TITLE            = ' '
       importing
            filename         = name
*           RC               =
      exceptions
            inv_winsys       = 1
            no_batch         = 2
            selection_cancel = 3
            selection_error  = 4
            others           = 5.

* end of -------------------------------------------------- "P30K108491


initialization.


start-of-selection.

  perform check_parameters.

  if not workstn is initial.

    call function 'WS_UPLOAD'
           exporting
                filename            = name
                filetype            = 'ASC'
           tables
                data_tab            =  extrec
         exceptions
              conversion_error    = 1
*         FILE_OPEN_ERROR     = 2
              file_read_error     = 3
              invalid_table_width = 4
              invalid_type        = 5
              no_batch            = 6
              unknown_error       = 7
              others              = 8.
    if sy-subrc eq 2.
      write: / 'Fehlerhafter Pfadname'(013).
    endif.

  elseif not dataset is initial.

    open dataset file for input message msg.
    if sy-subrc ne 0.
      write: / msg.
      stop.
    endif.
    do.
      read dataset file into extrec.
      if sy-subrc ne 0. exit. endif.
      append extrec.
    enddo.

  else.

* Nur zum Testen
    extrec-zausw = '10005301'.
    extrec-satza = 'P10'.
    extrec-ldate = sy-datum.
    extrec-ltime = '120000'.
*    extrec-otype = 'S '.
*    extrec-plans = '12345678'.
*    extrec-usrup = 'VIELZWECKFELD'.
    append extrec.
    extrec-ltime = '140000'.
    extrec-satza = 'Z10'.
    append extrec.

  endif.

  loop at extrec.
    check not extrec is initial.
    perform set_extrec_to_timeevent.
    perform append_timeevent.
    perform fill_stat.
  endloop.

*for double entry
  CLEAR SKIPPED_TIMEEVENT. REFRESH SKIPPED_TIMEEVENT.
  LOOP AT TIMEEVENT.
  SELECT SINGLE * FROM TEVEN WHERE PERNR = TIMEEVENT-PERNR AND
                                   LDATE = TIMEEVENT-LDATE AND
                                   LTIME = TIMEEVENT-LTIME AND
                                   SATZA = TIMEEVENT-SATZA AND
                                   STOKZ = ''.
  IF SY-SUBRC EQ 0.
    MOVE-CORRESPONDING TIMEEVENT TO SKIPPED_TIMEEVENT.
    APPEND SKIPPED_TIMEEVENT.
    DELETE TIMEEVENT.
  ENDIF.
  ENDLOOP.


  if protokol eq 'X'.
    perform show_timeevent.
    perform show_skipped_timeevent.
  endif.

  if upload eq 'X'.
    describe table timeevent lines sy-tfill.
    if not timeevent[] is initial.

      perform get_numbers.

      call function 'HR_CC1_TIMEEVENT_INSERT'
           tables
                timeevent = timeevent
           exceptions
                others    = 1.
      commit work.

      describe table timeevent lines l_uploaded_timeevents.
    endif.
  endif.

  if update eq 'X'.

    call function 'HR_CC1_TIMEEVENT_POST'
         importing
              posted_timeevents  = l_posted_timeevents
              faulty_timeevents  = l_faulty_timeevents
              locked_timeevents  = l_locked_timeevents
              skipped_timeevents = l_skipped_timeevents     "P40K026655
         exceptions
              others            = 0.

*       Zeitpunkt zur Steuerung der Batchverarbeitung setzen
*   GET TIME.
*   start_datum = sy-datum.
*   start_uzeit = sy-uzeit + 10.
*       Übergabe Steuerungsparameter an Task-handler -> BATCH !
*   CALL FUNCTION 'START_OF_BACKGROUNDTASK'
*        EXPORTING
*             startdate = start_datum
*             starttime = start_uzeit
*        EXCEPTIONS
*             others    = 1.
    commit work.
  endif.

* PERFORM show_stat.
  perform show_verarbeitung.

*=====================================================================*

*---------------------------------------------------------------------*
*    FORM SET_EXTREC_TO_TIMEEVENT                                     *
*---------------------------------------------------------------------*
*       Hier ist gegebenenfalls Sondercoding erforderlich.            *
*---------------------------------------------------------------------*
form set_extrec_to_timeevent.
* Nutzdaten
  move-corresponding extrec to timeevent.
*  move: extrec-otype to timeevent-pdc_otype,
*        extrec-plans to timeevent-pdc_plans,
*        extrec-usrup to timeevent-pdc_usrup.
* technische Felder
  timeevent-indeu = 'I'.
endform.

*---------------------------------------------------------------------*
*       FORM APPEND_timeevent.
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form append_timeevent.
*  IF sorted EQ 'X'.
** Die Sätze sind nach Ausweisnummer gruppiert,
** performant: nur den letzten Satz vergleichen.
*    IF timeevent-zausw EQ last_timeevent-zausw AND
*       timeevent-ldate EQ last_timeevent-ldate AND
*       timeevent-ltime EQ last_timeevent-ltime AND
*       timeevent-erdat EQ last_timeevent-erdat AND
*       timeevent-ertim EQ last_timeevent-ertim .
*      DESCRIBE TABLE timeevent LINES sy-tfill.
*      MODIFY timeevent INDEX sy-tfill.
*      skipped_timeevent = last_timeevent.
*      APPEND skipped_timeevent.
*    ELSE.
*      APPEND timeevent.
*    ENDIF.
*    last_timeevent = timeevent.
*  ELSE.
* Die Sätze sind nicht sortiert,
* immer mit allen vorhandenen Sätzen vergleichen.
    read table timeevent into last_timeevent
                      with key  zausw = timeevent-zausw
                                ldate = timeevent-ldate
                                ltime = timeevent-ltime
                                erdat = timeevent-erdat
                                ertim = timeevent-ertim
                      binary search.
    if sy-subrc eq 0.
* Früherer Eintrag wird protokolliert und überschrieben.
      modify timeevent index sy-tabix.
      skipped_timeevent = last_timeevent.
      append skipped_timeevent.
    else.
      insert timeevent index sy-tabix.
    endif.
*  ENDIF.
endform.

*---------------------------------------------------------------------*
*       FORM CHECK_PARAMETERS                                         *
*---------------------------------------------------------------------*
form check_parameters.
  if file eq space.
    write: / 'Bitte Namen für seq. Datenbestand angeben'(e01).
    stop.
  endif.
endform.

*---------------------------------------------------------------------*
*       FORM FILL_STAT                                                *
*---------------------------------------------------------------------*
form fill_stat.
  read table stat with key timeevent-ldate binary search.
  if sy-subrc eq 0.
    add 1 to stat-anzhl.
    modify stat index sy-tabix.
  else.
    move timeevent-ldate to stat-ldate.
    move 1 to stat-anzhl.
    insert stat index sy-tabix.
  endif.
endform.

*---------------------------------------------------------------------*
*       FORM SHOW_STAT                                                *
*---------------------------------------------------------------------*
form show_stat.
  skip 1.
  summary.
  format color col_background intensified.
  write:    'Statistik                     '(s06)
            color col_background intensified off.
  write: /(23)  sy-uline.
  format color col_heading.
  write: / sy-vline no-gap.
  write:  (10) 'Datum     '(s07) no-gap.
  write:   sy-vline no-gap.
  write:   (10) 'Sätze     '(s10) no-gap.
  write:   sy-vline.
  write: /(23) sy-uline.
  loop at stat.
    write: /  sy-vline no-gap.
    format color col_key.
    write:    stat-ldate no-gap.
    write:    sy-vline no-gap.
    format color col_normal.
    write: (10) stat-anzhl no-gap.
    write:    sy-vline no-gap.
  endloop.
  write: /(23) sy-uline.
endform.

*---------------------------------------------------------------------*
*       FORM SHOW_VERARBEITUNG                                        *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form show_verarbeitung.
  l_total_timeevents = l_posted_timeevents +
                       l_faulty_timeevents +
                       l_locked_timeevents.
  skip 1.
  summary.
  format color col_background intensified.
  write:    'Verarbeitung                  '(par)
            color col_background intensified off.
  write: /(78)  sy-uline.
  format color col_heading.
  write: / sy-vline no-gap.
  write:  (65) ' ' no-gap.
  write:   sy-vline no-gap.
  write:   (10) 'Sätze     '(s10) no-gap.
  write:   sy-vline.
  write: /(78) sy-uline.

  write: /  sy-vline no-gap.
  format color col_key.
  write: (65) 'in Schnittstelle gestellt'(v01) no-gap.
  write:    sy-vline no-gap.
  format color col_normal.
  write: (10) l_uploaded_timeevents no-gap.
  write:    sy-vline no-gap.
  write: /  sy-vline no-gap.
  format color col_key.
  write: (65) 'aus Schnittstelle gelesen'(v02)  no-gap.
  write:    sy-vline no-gap.
  format color col_normal.
  write: (10) l_total_timeevents no-gap.
  write:    sy-vline no-gap.
  write: /  sy-vline no-gap.
  format color col_key.
  write: (65) 'in Zeitwirtschaft verbucht'(v03)  no-gap.
  write:    sy-vline no-gap.
  format color col_normal.
  write: (10) l_posted_timeevents no-gap.
  write:    sy-vline no-gap.
  write: /  sy-vline no-gap.
  format color col_key.
  write: (65) 'in Fehlervorrat gestellt'(v04)    no-gap.
  write:    sy-vline no-gap.
  format color col_normal.
  write: (10) l_faulty_timeevents no-gap.
  write:    sy-vline no-gap.
  write: /  sy-vline no-gap.
  format color col_key.
  write: (65)
         'in Schnittstelle belassen, da Personalnummer gesperrt'(v05)
         no-gap.
  write:    sy-vline no-gap.
  format color col_normal.
  write: (10) l_locked_timeevents no-gap.
  write:    sy-vline no-gap.
  write: /  sy-vline no-gap.                                "P40K026655
  format color col_key.                                     "P40K026655
  write: (65) 'durch Zeitwirtschaft verworfen'(v06) no-gap. "P40K026655
  write:    sy-vline no-gap.                                "P40K026655
  format color col_normal.                                  "P40K026655
  write: (10) l_skipped_timeevents no-gap.                  "P40K026655
  write:    sy-vline no-gap.                                "P40K026655
  write: /(78) sy-uline.
endform.

*---------------------------------------------------------------------*
*    FORM SHOW_timeevent                                              *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form show_timeevent.
  summary.
  format color col_background intensified.
  write:    'Protokoll                     '(s08)
            color col_background intensified off.
  write: /(78) sy-uline.
  format color col_heading.
  write: / sy-vline no-gap.
  write: (10) 'PersNr.   '(001) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Zeitausw. '(002) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Datum     '(003) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Uhrzeit   '(004) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Satzart   '(005) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Terminal  '(006) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'An/Abw    '(007) no-gap.
  write:   sy-vline no-gap.
  write: /(78) sy-uline.
  format color col_normal.
  loop at timeevent.
    write: / sy-vline no-gap.
    write: (10) timeevent-pernr no-zero no-gap,
                sy-vline no-gap,
           (10) timeevent-zausw no-zero no-gap,
                sy-vline no-gap,
           (10) timeevent-ldate no-gap,
                sy-vline no-gap,
           (10) timeevent-ltime no-gap,
                sy-vline no-gap,
           (10) timeevent-satza no-gap,
                sy-vline no-gap,
           (10) timeevent-terid no-gap,
                sy-vline no-gap,
           (10) timeevent-abwgr no-gap,
                sy-vline no-gap.
  endloop.
  write: /(78) sy-uline.
endform.

*---------------------------------------------------------------------*
*       FORM SHOW_SKIPPED_timeevent                                   *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form show_skipped_timeevent.
  check not skipped_timeevent[] is initial.
  skip 1.
  summary.
  format color col_background intensified.
* WRITE:    'Überschriebene Sätze'(s09)                     "P40K026655
  write:    'Überlesene doppelte Sätze'(s09)                "P40K026655
            color col_background intensified off.
  write: /(78) sy-uline.
  format color col_heading.
  write: / sy-vline no-gap.
  write: (10) 'PersNr.   '(001) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Zeitausw. '(002) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Datum     '(003) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Uhrzeit   '(004) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Satzart   '(005) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'Terminal  '(006) no-gap.
  write:   sy-vline no-gap.
  write: (10) 'An/Abw    '(007) no-gap.
  write:   sy-vline no-gap.
  write: /(78) sy-uline.
  format color col_normal.
  loop at skipped_timeevent into timeevent.
    write: / sy-vline no-gap.
    write: (10) timeevent-pernr no-zero no-gap,
                sy-vline no-gap,
           (10) timeevent-zausw no-zero no-gap,
                sy-vline no-gap,
           (10) timeevent-ldate no-gap,
                sy-vline no-gap,
           (10) timeevent-ltime no-gap,
                sy-vline no-gap,
           (10) timeevent-satza no-gap,
                sy-vline no-gap,
           (10) timeevent-terid no-gap,
                sy-vline no-gap,
           (10) timeevent-abwgr no-gap,
                sy-vline no-gap.
  endloop.
  write: /(78) sy-uline.
endform.

*---------------------------------------------------------------------*
*       FORM GET_NUMBERS                                              *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form get_numbers.
  data: retcd  like inri-returncode,
        quantity_wanted like inri-quantity,
        number          like pdsnr-pdsnr,
        object like inri-object      value 'PD_SEQ_NR',
        range  like inri-nrrangenr   value '01',
        quantity_get    like inri-quantity .
  describe table timeevent lines quantity_wanted.
  check quantity_wanted gt 0.
  call function 'NUMBER_GET_NEXT'
       exporting
            object                  = object
            nr_range_nr             = range
            quantity                = quantity_wanted
       importing
            returncode              = retcd
            number                  = number
            quantity                = quantity_get
       exceptions
            object_not_found        = 1
            interval_not_found      = 2
            number_range_not_intern = 3.
  case sy-subrc.
    when 0.
      case retcd.
        when 1.                        "kritischer Bereich
          message w093(53) with object number.
        when 2.                        "erschöpft
          message e094(53) with object number.
        when 3.                        "erschöpft
          message e094(53) with object number.
      endcase.
    when 1.                            "Objekt nicht angelegt
      message a090(53) with object.
    when 2.                            "Intervall nicht angelegt
      message a091(53) with object number.
    when 3.                            "Intervall nicht intern
      message a092(53) with object number.
  endcase.
  loop at timeevent.
    timeevent-pdsnr = number - quantity_wanted + sy-tabix.
    modify timeevent.
  endloop.
  commit work.
endform.

Message was edited by:

Fatih AYDIN

4 REPLIES 4
Read only

Former Member
0 Likes
1,333

Hi Faith,

there has been lot many changes in the time programs during SAP upgrades. Can you just revisit and see if you still require your changes.

Regards,

Atish

Read only

0 Likes
1,332

sorry for forgetting. programs is working 3 months ago. and there is no upgrade (deleted from question). but i saw cc1tev table is getting our records but not same record in teven table. maybe it will help for you.

following is example of my upload text.

800119599001175920071002075100P10

Read only

0 Likes
1,332

Hi Faith,

I am not in front of system so can't actually check it.

Regards,

Atish

Read only

0 Likes
1,332

Hi Atish,

ok you are right. I add new function to solve problem. its HR_TMW_DB_UPDATE_TEVENT.

i am directly insert to teven with that fm. but I want to solve why it is not working. it was working before and now its working now just some personel. i will become insane. what is problem?

note my name is Fatih, not Faith.