SAP Jobsuche bei DV-Treff
HR_Heike
  • HR_Heike
  • SAP Forum - User Thema Starter
vor 19 Jahre
Hallo zusammen,

ich als Personalerin soll mich jetzt ersthaft mit der ABAP Programmierung auseinandersetzten... :P

Naja, wie auch immer. Ich habe ja auch schon ein bisschen programmiert, nämlich eine Liste, die auf der logischen Datenbank pnp basiert (Personal Stammdaten)

Jetzt soll ich die Liste aber mittels eines ALV Grits ausgeben. Irgendwie habe ich im hinterkopf das man das mit einem Funktionsbaustein macht!

Hat jemand Erfahrung damit oder kann mir mal weiterhelfen.

Auch hier das bisherige Coding (ich weiß ist ein wenig chaotisch - fang gerade erst wieder an und konnte es wohl auch nie so richtig!!!)

Lieben Dank
Heike


*&---------------------------------------------------------------------*
*& Report  ZHEIKE                                                      *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ZHEIKE                                                      .
Tables: pernr,t555v.

data: Dienstj(3) type n,
    Alter(3) type n,
    Geschlecht type c,
    Abwesenheit type c value 'Y',
    Datum type d.

Infotypes: 0000,
          0001,
          0002,
          0041,
          0007,
          2001 Mode n.

SELECTION-SCREEN BEGIN OF BLOCK Zusatz with frame title text-t00.
Parameters: P_Dienst like Dienstj obligatory.
Select-options P_Abwes for p2001-subty obligatory.
SELECTION-SCREEN end of block Zusatz.

Initialization.
 PNPSTAT2-LOW = '3'.
 Append pnpstat2.


 pnpxpgpk-low = '*r1'.
 PNPXPGPK-option = 'NE'.
*  pnpxpgpk-high = '*r1'. sonst steht im Intervall von *r1 bis *r1,
*  was aber vorne ausgeschlossen wird
 append PNPXPGPK.


start-of-selection.

get pernr.
* Clear
 Abwesenheit = 'Y'.

 Provide * from p0041 between pn-begda and pn-endda.
   If p0041-DAR01 = '01'.
     Dienstj = sy-datum(4) - p0041-DAT01(4).
   Else.
     Dienstj = '0000'.
   endif.
 endprovide.


 Provide * from p0002 between pn-begda and pn-endda.
   If p0002-ANRED = 'Herr'.
     Geschlecht = 'M'.
   else.
     Geschlecht = 'W'.
   endif.

   Alter = sy-datum(4) - p0002-GBPAS(4).

   RP_READ_ALL_TIME_ity pn-begda pn-endda.

   datum(4) = sy-datum(4) - 1.
   datum+4(4) = '0101'.
*  Provide * from p2001 between Datum and sy-Datum
*            where p2001-subty = '0220'.
*
*    if p2001_valid eq 'X'.
*      Abwesenheit = 'Y'.
*    endif.
*  endprovide.

*  rp-provide-from-last p2001 0220 datum sy-datum.
*  if pnp-sw-found = '0'.
*    Abwesenheit = 'Y'.
*  endif.

   loop at p2001 where subty = '0220'
* ohne größer und kleiner Genau 1 Datensatz von bis +
* vor get pernr Initialisieren!!!!!
   and begda GE datum
   and endda LE sy-datum.
     Abwesenheit = 'N'.
     exit.
   endloop.

   If p0002 ge P_abwes-low and p0002 le P_abwes-high.
     If Dienstj ge P_dienst.
       If Alter between '030' and '060'.
         If p0007-wostd gt '20'.
           If p2001-subty ne '0210'.
             If p0001-PERSG = '1' or p0001-persg = '2' or
             p0001-persg ='3'.
               If Abwesenheit = 'Y'.
                 perform print.
               endif.

             endif.
           endif.
         endif.
       endif.
     endif.
   endif.

 endprovide.


end-of-selection.




*&---------------------------------------------------------------------*
*&      Form  print
*&---------------------------------------------------------------------*
*       Ausgabe
*----------------------------------------------------------------------*
form print.
 write: / p0002-pernr no-zero,
              sy-vline,
              (15) p0002-nachn,
              sy-vline,
              (15) p0002-Vorna,
              sy-vline,
              p0002-GBPAS,
              sy-vline,
              p0001-vdsk1,
              sy-vline,
              p0001-WERKS,
              sy-vline,
              p0001-KOSTL,
              sy-vline,
              (3) Geschlecht,
              sy-vline,
              Dienstj no-zero,
              sy-vline,
              p0007-SCHKZ,
              Dienstj.
endform.                    "print
ralfb
  • ralfb
  • SAP Forum - Profi
vor 19 Jahre
Hallo heike,
zunächst eine Tabelle definieren, in die die Daten gespeichert werden:

DATA: error_tab LIKE hrerror OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF tc_tab OCCURS 10,   "Download-Tabelle
       pernr(8),                  "Personalnummer
       begda(10),                 "Beginndatum
       endda(10),                 "Endedatum
       ...
      END OF tc_tab.
DATA: retcode LIKE sy-subrc.

DATA: BEGIN OF fieldnames OCCURS 3,
       title(60),
       table(6),
       field(10),
       kz(1),
     END OF fieldnames.

* Daten für den Table Control
DATA:  myreport LIKE sy-repid,
          head_line1(60),
          head_line2(60).


Innerhalb selection versorgen:

tc_tab-pernr  = p0002-pernr.
tc_tab-begda = p0002-pernr.
....
append tc_tab.

Nach selection die Überschriften versorgen:
* Tabelle der Feldnamen aufbauen
*----------------------------------------------------------------------*
FORM append_fieldnames.

 CLEAR fieldnames.
 fieldnames-title = 'Pers-Nr.'.
 APPEND fieldnames.
 CLEAR fieldnames.
 fieldnames-title = 'von'.
 APPEND fieldnames.
 CLEAR fieldnames.
 fieldnames-title = 'bis'.
 APPEND fieldnames.
 ...

* Und jetzt noch senden
myreport = sy-repid.
head_line1 = 'textxy'.
head_line2 = 'Textzz'


CALL FUNCTION 'DISPLAY_BASIC_LIST'
     EXPORTING
          basic_list_title     = sy-title
          file_name            = myreport
          head_line1           = head_line1
          head_line2           = head_line2
*         FOOT_NOTE1           = ' '
*         FOOT_NOTE2           = ' '
*         FOOT_NOTE3           = ' '
*         LAY_OUT              = 0
*         dyn_pushbutton_text1 = ' '
*         DYN_PUSHBUTTON_TEXT2 =
*         DYN_PUSHBUTTON_TEXT3 =
*         DYN_PUSHBUTTON_TEXT4 =
*         DYN_PUSHBUTTON_TEXT5 =
*         DYN_PUSHBUTTON_TEXT6 =
*         DATA_STRUCTURE       = ' '
*         HEAD_LINE3           = ' '
*         HEAD_LINE4           = ' '
        current_report       = myreport
*         LIST_LEVEL           = ' '
*         ADDITIONAL_OPTIONS   = ' '
*         WORD_DOCUMENT        =
     IMPORTING
          return_code          =  retcode
     TABLES
          data_tab             =  tc_tab
          fieldname_tab        =  fieldnames
*         SELECT_TAB           =
          error_tab            =  error_tab
     EXCEPTIONS
          download_problem     = 1
          no_data_tab_entries  = 2
          table_mismatch       = 3
          print_problems       = 4
          OTHERS               = 5.


Ich hoffe, ich habe nichts vergessen. Wenn Du  icht klar kommst, einfach nochmals Problem posten.

ralf

RB