Allan Porse Kristiansen

CV - SAP Kurser og Erhvervserfaring

Person

Personal details :
Name: Allan Porse Kristiansen
Date of Birth: 24. May 1967
Place of Birth: Nakskov, Denmark
Nationality: Danish
Marital Status: Married
Address: Aulkærvænget 10, 5260 Odense S, Denmark
Phone: +45 25 66 59 67
E-Mail: A.P.Kristiansen@gmail.com
Website: Porses.dk

Erhvervserfaring

Arbejdssted Dato Primærarbejdsopgave
DLG Group aug. 2022 - Nu Senior SAP Developer
Energinet nov. 2019 - jun. 2022 SAP HANA/ABAP developer
HOFOR A/S jan. 2015 - nov. 2019 SAP ABAP developer
KMD mar. 1997 - aug. 2022 SAP System developer
Rambøll 1994 - 1997 IT developer

SAP Kurser

Marathon træningsprogram

Marathon Træning

Uge Træning Tempo (min/km)) Puls (bpm) Kategori Total
Uge 1          
1. dag 14 km roligt løb 05:33 140-155 Roligt løb 14 km
3. dag 2 km opvarm 140-155 Roligt løb 8.8 km
6x800 m, pause 2:30 min 04:05 185-200 VO2max
2 km afjog 140-155 Roligt løb
5. dag 18 km roligt løb 05:33 140-170 Langtur 18 km
I alt 40.8 km
Uge 2          
1. dag 12 km roligt løb 05:33 140-155 Roligt løb 14 km
incl. 6x100 m stigningsløb 185-200 Hastighedsteknik
2 km afjog 140-155 Roligt løb
3. dag 2 km opvarm 140-155 Roligt løb 10 km
5x1200 m, pause 1:30 min 04:27 170-185 Mælkesyretærskel
2 km afjog 140-155 Roligt løb
5. dag 20 km roligt løb 05:33 140-170 Langtur 20 km
I alt 44 km
Uge 3          
1. dag 16 km roligt løb 05:33 140-155 Roligt løb 16 km
3. dag 2 km opvarm 140-155 Roligt løb 8.8 km
6x800 m, pause 2:30 min 04:05 185-200 VO2max
2 km afjog 140-155 Roligt løb
5. dag 22 km roligt løb 05:33 140-170 Langtur 22 km
I alt 46.8 km
Uge 4          
1. dag 12 km roligt løb 05:33 140-155 Roligt løb 12 km
3. dag 12 km roligt løb 05:33 140-155 Roligt løb 12 km
5. dag 12 km roligt løb 05:33 140-155 Roligt løb 12 km
I alt 36 km
Uge 5          
1. dag 14 km roligt løb 05:33 140-155 Roligt løb 14 km
3. dag 2 km opvarm 140-155 Roligt løb 10 km
6x1000 m, pause 3:10 min 04:05 185-200 VO2max
2 km afjog 140-155 Roligt løb
5. dag 22 km roligt løb 05:33 140-170 Langtur 22 km
I alt 46 km
Uge 6          
1. dag 12 km roligt løb 05:33 140-155 Roligt løb 14 km
incl. 8x100 m stigningsløb 185-200 Hastighedsteknik
2 km afjog 140-155 Roligt løb
3. dag 2 km opvarm 140-155 Roligt løb 11.5 km
5x1500 m, pause 1:30 min 04:27 170-185 Mælkesyretærskel
2 km afjog 140-155 Roligt løb
5. dag 24 km roligt løb 05:33 140-170 Langtur 24 km
I alt 49.5 km
Uge 7          
1. dag 18 km roligt løb 05:33 140-155 Roligt løb 18 km
3. dag 2 km opvarm 140-155 Roligt løb 10 km
6x1000 m, pause 3:10 min 04:05 185-200 VO2max
2 km afjog 140-155 Roligt løb
5. dag 26 km roligt løb 05:33 140-170 Langtur 26 km
I alt 54 km
Uge 8          
1. dag 14 km roligt løb 05:33 140-155 Roligt løb 14 km
3. dag 2 km opvarm 140-155 Roligt løb 8 km
5 km testløb 185-200 Testløb
1 km afjog 140-155 Roligt løb
5. dag 16 km roligt løb 05:33 140-155 Roligt løb 16 km
I alt 38 km
Uge 9          
1. dag 16 km roligt løb 05:33 140-155 Roligt løb 16 km
3. dag 2 km opvarm 140-155 Roligt løb 11.5 km
5x1500 m, pause 1:30 min 04:27 170-185 Mælkesyretærskel
2 km afjog 140-155 Roligt løb
5. dag 24 km roligt løb 05:33 140-170 Langtur 24 km
I alt 51.5 km
Uge 10          
1. dag 18 km roligt løb 05:33 140-155 Roligt løb 18 km
3. dag 2 km opvarm 140-155 Roligt løb 12 km
4x2000 m, pause 1:30 min 04:27 170-185 Mælkesyretærskel
2 km afjog 140-155 Roligt løb
5. dag 26 km roligt løb 05:33 140-170 Langtur 26 km
I alt 56 km
Uge 11          
1. dag 18 km roligt løb 05:33 140-155 Roligt løb 18 km
3. dag 2 km opvarm 140-155 Roligt løb 12 km
8 km tempoløb 04:27 170-185 Mælkesyretærskel
2 km afjog 140-155 Roligt løb
5. dag 30 km roligt løb 05:33 140-170 Langtur 30 km
I alt 60 km
Uge 12          
1. dag 16 km roligt løb 05:33 140-155 Roligt løb 16 km
3. dag 2 km opvarm 140-155 Roligt løb 13 km
10 km testløb 185-200 Testløb
1 km afjog 140-155 Roligt løb
5. dag 16 km roligt løb 05:33 140-155 Roligt løb 16 km
I alt 45 km
Uge 13          
1. dag 18 km roligt løb 05:33 140-155 Roligt løb 18 km
3. dag 2 km opvarm 140-155 Roligt løb 14 km
5x2000 m, pause 1:30 min 04:27 170-185 Mælkesyretærskel
2 km afjog 140-155 Roligt løb
5. dag 28 km roligt løb 05:33 140-170 Langtur 28 km
incl. 8 km marathonpace 04:45 155-170 Marathon pace
I alt 60 km
Uge 14          
1. dag 14 km roligt løb 05:33 140-155 Roligt løb 14 km
3. dag 2 km opvarm 140-155 Roligt løb 16 km
12 km løbsforberedelse (mp) 04:45 155-170 Mælkesyretærskel
2 km afjog 140-155 Roligt løb
5. dag 20 km roligt løb 05:33 140-170 Langtur 20 km
incl. 8 km marathonpace 04:45 155-170 Marathon pace
I alt 50 km
Uge 15          
1. dag 14 km roligt løb 05:33 140-155 Roligt løb 14 km
incl. 4 km marathonpace 04:45 155-170 Marathon pace
3. dag 2 km opvarm 140-155 Roligt løb 7 km
3x1000 m, pause 3:10 min 04:05 185-200 VO2max
2 km afjog 140-155 Roligt løb
5. dag 16 km roligt løb 05:33 140-170 Langtur 16 km
I alt 37 km
Uge 16          
1. dag 10 km roligt løb 05:33 140-155 Roligt løb 10 km
3. dag 8 km roligt løb 05:33 140-155 Roligt løb 10 km
incl. 4x100 m stigningsløb 185-200 Hastighedsteknik
2 km afjog 140-155 Roligt løb
5. dag 6 km roligt løb 05:33 140-155 Roligt løb 6 km
I alt 26 km

Mine gennemførte maraton løb

Hamburg Marathon 2023-04-23

Hamburg Marathon 2022-04-24

Hamburg Marathon 2021-09-12

Hollufgård Marathon 2020-10-11

Hollufgård Marathon 2019-11-10

Berlin Marathon 2019-09-29

København Marathon 2019-05-19

Berlin Marathon 2018-09-16

Hamburg Marathon 2018-04-29

H.C.Andersen Marathon 2017-10-01

Hamburg Marathon 2017-04-23

Korup Halvmarathon 2017-04-02

H.C.Andersen Marathon 2016-10-02

Eventyrløbet 2016-05-15

Hamburg Marathon 2016-04-17

Korup Halvmarathon 2016-04-03

H.C. Andersen Marathon 2015-10-04

DHL Stafetten Odense 2015-08-12

Eventyrløbet 2015-05-14

Lillebælt Halvmarathon 2015-05-09

Korup Halvmarathon 2015-04-12

Fruens Bøge Marathon 2015-02-08

Hollufgård Halvmarathon 2014-12-30

H.C. Andersen Marathon 2014-09-28

Odense Cityløb 30km 2014-08-31

DHL Stafetten Odense 2014-08-12

ODINSBROLØBET Halvmarathon 2014-06-14

Eventyrløbet 2014-05-29

Lillebælt Halvmarathon 2014-05-03

Korup Halvmarathon 2014-04-06

H.C. Andersen Marathon 2013-09-22

Eventyrløbet 2013-05-09

Lillebælt Halvmarathon 2013-05-04

Korup Halvmarathon 2013-04-07

Årslevløbet 2012 2012-09-15

Eventyrløbet 2012-05-17 Startnr 1134

Egeskov Slotsløb 2012-04-28

Korup Halvmarathon 2012-04-01 Startnr 64

Mine SAP ABAP tips

Clean ABAP Styleguide

ABAP - Programming Guidelines

ABAP Cleaner

code pal for ABAP

DSAG Recommendations | Best Practice Guidelines for Development - Useful Tips for ABAP Development

abapOpenChecks

*& --------------------------------------------------------------------- *
*& Report ZAPK_ABAP_751
*& --------------------------------------------------------------------- *
*& archer4sap.com/sap-abap-7-51_v1
*& --------------------------------------------------------------------- *
   REPORT zapk_abap_751.
* concatenating-literals-and-constants
   CONSTANTS  lc_abap TYPE string VALUE  'ABAP 751' .
   WRITE  :   |  Hello   |   &   |  { lc_abap }  |  .

* repeating-values
   WRITE  /   |  { repeatval  'A' occ  }  |  .

* logical-expressions
   DATA  lv_num1 TYPE  VALUE  2 ,
         lv_num2  TYPE  VALUE  5 .
   IF lv_num1 * lv_num2  10 .
     WRITE  /   |  Now inline expressions are possible.  |   &
                |   It reduces  LINES  OF CODE!  |  .
   ENDIF .

* inline-declaration
   SELECT matnr
     FROM mara
     INTO  TABLE @DATA(lt_mara) .
   LOOP  AT lt_mara ASSIGNING  FIELD - SYMBOL (<lfs_mara>) .
     WRITE  /   |  Material { <lfs_mara>-matnr }  |  .
   ENDLOOP .

* value-expressions-chaining-default
   TYPES  BEGIN  OF lty_value,
            field1  TYPE  i ,
            field2  TYPE  i ,
           END  OF lty_value,

          ltty_value  TYPE  STANDARD  TABLE  OF lty_value
                        WITH EMPTY KEY .

   DATA  lv_value TYPE  i .

   DATA (lt_values VALUE ltty_value(
                       field1  field2  )
                       field1  )
                       field1  field2  ) .

   DO  TIMES .
    lv_value  VALUE #lt_values[ sy- index ]-field2 DEFAULT  - ) .
     WRITE  / lv_value.
   ENDDO .

* conv-conversion-operator
   DATA  lv_integer TYPE  i .

  lv_integer  sqrt sqrt ) .
   WRITE  / lv_integer.

  lv_integer  CONV i sqrt + CONV i sqrt ) .
   WRITE  / lv_integer.

* let-expression
   TYPES :
     BEGIN  OF ty_data,
      field1  TYPE  i ,
      field2  TYPE  i ,
     END  OF ty_data.

   DATA  lt_data TYPE  TABLE  OF ty_data.

   DO  TIMES .
     DATA (lwa_data VALUE ty_data(
                                   LET  sy- index
                                       y  sy- index 1
                                    IN field1  x
                                      field2  ) .
     APPEND lwa_data TO lt_data.
   ENDDO .

* cl_demo_output=>display( lt_data ).

* cond-switch-operator
   DO  TIMES .
     DATA ( value =
           COND string (
            WHEN sy- index  THEN   |  One  |
            WHEN sy- index  THEN   |  Two  |
            ELSE   |  GREATER than 2!  |   ) .
     WRITE  value .
   ENDDO .

   DO  TIMES .
     DATA (value_switch =
      SWITCH string sy- index
       WHEN  THEN   |  One  |
       WHEN  THEN   |  Two  |
       ELSE   |  GREATER than 2!  |   ) .
     WRITE  / value_switch.
   ENDDO .

* new-operator
   DATA lo_ref TYPE  REF  TO cl_e2e_static_tbom_gap9.
  lo_ref  NEW # ) .

   DATA (lo_ref1 NEW cl_e2e_static_tbom_gap9 ) .

* alternative-to-read-table
   DATA  lt_dfkkcoh TYPE  STANDARD  TABLE  OF dfkkcoh.

   SELECT mandt cotyp cokey FROM dfkkcoh INTO  TABLE lt_dfkkcoh.
   IF sy-subrc  0 .
     ASSIGN lt_dfkkcoh[ TO  FIELD - SYMBOL (<lfs_dfkkcoh>) .
     IF sy-subrc  0 .
       WRITE  /  | Correspondence Key  { <lfs_dfkkcoh>-cokey }  | .
     ENDIF .

     ASSIGN lt_dfkkcoh[ cotyp  '0042' TO  FIELD - SYMBOL (<lfs_dfkkcoh1>) .
   ENDIF .

   TRY  .
       WRITE  / lt_dfkkcoh[ cotyp  'XXXX' ]-cokey.
     CATCH cx_sy_itab_line_not_found.
       WRITE  /  | Error in read! | .
   ENDTRY .

* filter-expression
   " Extended Expressions : FILTER, works as a SELECT on Internal Table
   TYPES  BEGIN  OF lty_value2,
            field1  TYPE  i ,
            field2  TYPE  i ,
           END  OF lty_value2,

           " Table type should be sorted or hashed
          ltty_value2  TYPE  SORTED  TABLE  OF lty_value
                         WITH  UNIQUE  KEY field1 field2.

   DATA (lt_values2 VALUE ltty_value2(
       field1  field2  )
       field1  field2  )
       field1  field2  ) .

   DATA  lt_values_filter   TYPE ltty_value2,
         lt_values_filtered  TYPE ltty_value2.

   WRITE  /  | Data  :  |     .
   LOOP  AT lt_values2 ASSIGNING  FIELD - SYMBOL (<lfs_value>) .
     WRITE  / <lfs_value>-field1space <lfs_value>-field2.
   ENDLOOP .

  lt_values_filter  VALUE ltty_value2(
       field1  field2  ) .   " Create Filter on Primary Key

*""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   WRITE  /  | Variant  Filter Table as operand |  .
  lt_values_filtered  FILTER #lt_values2 IN lt_values_filter
                         WHERE field1 field1  " Primary Key comparison here
                           AND field2 field2
                        ) .

   LOOP  AT lt_values_filtered ASSIGNING <lfs_value>.
     WRITE  / <lfs_value>-field1space <lfs_value>-field2.
   ENDLOOP .
*""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
*"TYPE can be explicitly mentioned with FILTER Statement
   WRITE  /  | Variant  Filter Table Table  Type ltty_value as Operand  |  .
   REFRESH lt_values_filtered[].
  lt_values_filtered  FILTER ltty_value2lt_values2 IN lt_values_filter
                         WHERE field1 field1  " Primary Key comparison here
                           AND field2 field2
                        ) .

   LOOP  AT lt_values_filtered ASSIGNING <lfs_value>.
     WRITE  / <lfs_value>-field1space <lfs_value>-field2.
   ENDLOOP .
*""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
*"Except keyword can be used to invert the selection with FILTER
   WRITE  /  | Variant  Filter Table Using  'EXCEPT' Keyword |  .
   REFRESH lt_values_filtered[].
  lt_values_filtered  FILTER #lt_values2 EXCEPT IN lt_values_filter
                         WHERE field1 field1  " Primary Key comparison here
                           AND field2 field2
                        ) .

   LOOP  AT lt_values_filtered ASSIGNING <lfs_value>.
     WRITE  / <lfs_value>-field1space <lfs_value>-field2.
   ENDLOOP .
*""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
*"FILTER operator's Basic form can be used without using IN operator.
*"In all forms of FILTER operator, only AND operator is allowed(no OR).
*"Syntax in this case is similar to FILTERed form
   WRITE  /  | Variant  Without Filter Table without IN operator  |  .
   REFRESH lt_values_filtered[].
  lt_values_filtered  FILTER #lt_values2  " no use of 'IN'
                          WHERE field1  3
                            AND field2  5
                        ) .

   LOOP  AT lt_values_filtered ASSIGNING <lfs_value>.
     WRITE  / <lfs_value>-field1space <lfs_value>-field2.
   ENDLOOP .

* line_exists
   IF line_existslt_values2[ 10 ) .
     WRITE  /  | Line 10 exists | .
   ELSE .
     WRITE  /  | Line 10 doesn`t exist | .
  ENDIF.

  IF line_exists( lt_values2[ field2 = 4 ] ).
    WRITE : /  | Line for field2 = 4 exists | .
  ELSE.
    WRITE : /  | Line for field2 = 4 doesn`t exist | .
   ENDIF .

* line_index
   DATA (lv_line line_indexlt_values2[ field1  ) .
   IF lv_line IS  NOT  INITIAL .
     WRITE  /  | Index  for field1  is  { lv_line } | .
   ENDIF .

   DATA (lv_line2 line_indexlt_values2[ field1  100 ) .
   IF lv_line2 IS  NOT  INITIAL .
     WRITE  /  | Index  for field1  100  is  { lv_line2 } | .
   ELSE .
     WRITE  /  | Index  for field1  100  not found! lv_line { lv_line2 } | .
   ENDIF .

* for-operator
   TYPES  BEGIN  OF lty_value3,
            field1  TYPE  i ,
            field2  TYPE  i ,
           END  OF lty_value3,

          ltty_value3  TYPE  STANDARD  TABLE  OF lty_value3 WITH EMPTY KEY ,
          ltty_field2  TYPE  STANDARD  TABLE  OF  WITH EMPTY KEY .

   DATA (lt_values3 VALUE ltty_value3(
                             field1  field2  )
                             field1  field2  )
                             field1  field2  )
                             field1  field2  ) .
   WRITE  'Data : ' .
   LOOP  AT lt_values3 ASSIGNING  FIELD - SYMBOL (<lfs_value3>) .
     WRITE  / <lfs_value3>-field1space<lfs_value3>-field2.
   ENDLOOP .
   """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   " Variant 1 : Extracting fields from internal table
   WRITE  'Variant 1 : Extracting fields from internal table ' .
   DATA (lt_field2 VALUE ltty_field2 FOR ls_value IN lt_values3 ls_value-field2  ) .
   LOOP  AT lt_field2 ASSIGNING  FIELD - SYMBOL (<lfs_field2>) .
     WRITE  / <lfs_field2>.
   ENDLOOP .
*""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   " Variant 2 : Changing sequence of field an internal table
   WRITE  'Variant 2 : Changing sequence of fields an internal table ' .
   TYPES  BEGIN  OF lty_seq,
            seq1  TYPE  i ,
            seq2  TYPE  i ,
           END  OF lty_seq,

          ltty_seq  TYPE  STANDARD  TABLE  OF lty_seq WITH EMPTY KEY .

   DATA (lt_seq VALUE ltty_seq FOR ls_seq_chg IN lt_values3
                                               seq1 ls_seq_chg-field2
                                                seq2  ls_seq_chg-field1  ) .
   LOOP  AT lt_seq ASSIGNING  FIELD - SYMBOL (<lfs_seq>) .
     WRITE  / <lfs_seq>-seq1space,<lfs_seq>-seq2 .
   ENDLOOP .
*""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
*" Variant 3 : using WHERE condition with FOR
   WRITE  'Variant 3 :  using WHERE condition with FOR' .
   DATA (lt_value_where VALUE ltty_value FOR ls_value IN lt_values3
                                               WHERE  field1  )   " Condition
                                               field1 ls_value-field1
                                                field2  ls_value-field2  ) .
   LOOP  AT lt_value_where ASSIGNING  FIELD - SYMBOL (<lfs_value_where>) .
     WRITE  / <lfs_value_where>-field1space<lfs_value_where>-field2 .
   ENDLOOP .
*""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
*"First iteration starts with i = 0(Inline declaration & initialization) and
*"increments according to THEN statement where i + 1 means i = i + 1. SY-INDEX
*"or SY-TABIX doesn't store index of iteration. This is alternate to DO-WHILE.
*" Variant 4 : FOR - THEN - UNTIL statement, normal case
   WRITE  'Variant 4 :  FOR - THEN - UNTIL, normal case' .
   DATA (lt_value_then_until VALUE ltty_value FOR  THEN UNTIL >= 4   " or i = 4
                                               field1  i
                                                field2  sy- index  ) .
   LOOP  AT lt_value_then_until ASSIGNING  FIELD - SYMBOL (<lfs_value_then_until>) .
     WRITE  / <lfs_value_then_until>-field1space<lfs_value_then_until>-field2 .
   ENDLOOP .
*""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
*"WHILE works just opposite to UNTIL. This is alternate to DO-WHILE. SY-INDEX
*"or SY-TABIX doesn't store index of iteration.
*" Variant 5 : FOR - THEN - WHILE statement
   WRITE  'Variant 5 :  FOR - THEN - WHILE ' .
   DATA (lt_value_then_while VALUE ltty_value FOR  THEN  WHILE  4
                                               field1  i
                                                field2  sy- index  ) .
   LOOP  AT lt_value_then_while ASSIGNING  FIELD - SYMBOL (<lfs_value_then_while>) .
     WRITE  / <lfs_value_then_while>-field1space<lfs_value_then_while>-field2 .
   ENDLOOP .
*""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
*" Variant 6 : NEW instead of VALUE operator
   WRITE  'Variant 6 :  NEW instead of VALUE operator ' .
   DATA (lo_value_new NEW ltty_value FOR  THEN  WHILE  4
                                               field1  i
                                                field2  .
   LOOP  AT lo_value_new->ASSIGNING  FIELD - SYMBOL (<lfs_value_obj>) .
     WRITE  / <lfs_value_obj>-field1space<lfs_value_obj>-field2 .
   ENDLOOP .
* base-operator
   TYPES ltty_days TYPE  TABLE  OF string WITH EMPTY KEY .

   DATA (lt_days VALUE ltty_days `Mon`  `Tue`  `Wed`  `Thu`  `Fri`  ) .

  lt_days  VALUE #BASE lt_days  `Sat`  `Sun`  ) .

   LOOP  AT lt_days ASSIGNING  FIELD - SYMBOL (<lfs_days>) .
     WRITE  / |{ <lfs_days> }|.
   ENDLOOP .