Code: Alles auswählen.
METHOD print.
Data:
lt_tab type standard table of ref to lcl_employee with NON-unique default key,
wa_tab TYPE lt_tab.
APPEND wa_tab_ TO lt_tab.
WRITE: / n_o_employees, 'Name:', fullname, 'Adresse:', adresse, 'Geburtstdatum:', dob , 'Gehalt:', salary.
ENDMETHOD. "print Gib mal ein paar Infos mehr heraus. Was willst du genau tun, welche Daten soll die ITAB aufnehmen, welche Fehlermeldung bekommst du aktuell.Trulchen hat geschrieben:Wie erstelle ich eine Interne Tabelle über die print Methode?
Code: Alles auswählen.
START-OF-SELECTION.
DATA:
lt_employees TYPE STANDARD TABLE OF REF TO lcl_employee.
FIELD-SYMBOLS:
<lr_employee> TYPE REF TO lcl_employee.
* Mehrere Dummy-Einträge anlegen
DO 5 TIMES.
APPEND INITIAL LINE TO lt_employees ASSIGNING <lr_employee>
CREATE OBJECT <lr_employee>
EXPORTING
set_name = 'test'.
set_firstname = ''
set_adresse = ''
set_dob = '20120401'.
ENDDO.
* Daten mit Print-Methode ausgeben
LOOP AT lt_employees ASSIGNING <lr_employee>.
NEW-LINE. "Damit jeder in einer neuen Zeile steht
<lr_employee>->print( ).
ENDLOOP.Code: Alles auswählen.
PARAMETERS:
p_name(50) TYPE c,
p_fname(50) TYPE c,
p_adr(50) TYPE c,
p_dob TYPE d,
p_bsal TYPE i.
START-OF-SELECTION.
DATA:
lt_employees TYPE STANDARD TABLE OF REF TO lcl_employee.
FIELD-SYMBOLS:
<lr_employees> TYPE REF TO lcl_employee.
DO 5 TIMES.
APPEND INITIAL LINE TO lt_employees ASSIGNING <lr_employees>.
CREATE OBJECT <lr_employees>
EXPORTING it_name = p_name
it_firstname = p_fname
it_adresse = p_adr
it_dob = p_dob
it_salary = p_bsal.
ENDDO.
CALL METHOD:
<lr_employees>->get_fullname,
<lr_employees>->init_base_salary,
<lr_employees>->get_dob RECEIVING rv_dob = p_dob,
<lr_employees>->get_adresse RECEIVING rv_adresse = p_adr ,
<lr_employees>->get_salary RECEIVING rv_salary = p_bsal.
LOOP AT lt_employees ASSIGNING <lr_employees>.
NEW-LINE. "Damit jeder in einer neuen Zeile steht
<lr_employees>->print( ).
ENDLOOP.Code: Alles auswählen.
LOOP AT lt_employees ASSIGNING <lr_employees>.
NEW-LINE. "Damit jeder in einer neuen Zeile steht
WRITE sy-tabix. "Die aktuelle Zeilennummer ausgeben
<lr_employees>->print( ).
ENDLOOP.Code: Alles auswählen.
METHOD get_fullname.
DATA sep(3) TYPE c VALUE ' '.
CONCATENATE name firstname into fullname SEPARATED BY sep.
rv_fullname = fullname.
ENDMETHOD. Code: Alles auswählen.
METHOD get_salary.
diff = sy-datum - dob.
IF diff > 14600.
salary = base_salary + ( base_salary * '0.05' ).
ELSEIF diff > 18250.
salary = base_salary + ( base_salary * '0.10' ).
ELSE.
salary = base_salary.
ENDIF.
rv_salary = salary.
ENDMETHODCode: Alles auswählen.
METHOD print.
Data:
ld_fullname TYPE char100, "CHAR damit die Breite in der Ausgabe immer gleich ist
ld_salary TYPE i.
ld_fullname = me->get_fullname( ).
ld_salary = me->get_salary( ).
WRITE: 'Name:', ld_fullname, 'Adresse:', me->adresse, 'Geburtstdatum:', me->dob , 'Gehalt:', ld_salary.
ENDMETHOD.