Code: Alles auswählen.
DATA: gt_cars_bookrent TYPE STANDARD TABLE OF zkob_cars,
gt_sched_bookrent TYPE STANDARD TABLE OF zkob_sched.
FIELD SYMBOLS: <gs_cars_bookrent> TYPE zkob_cars,
<gs_sched_bookrent> TYPE zkob_sched,
Select * from zkob_cars into CORRESPONDING FIELDS OF TABLE gt_cars_bookrent.
Select * from zkob_sched into CORRESPONDING FIELDS OF TABLE gt_sched_bookrent.
Perform write_to_gs USING gt_cars_bookrent
<gs_cars_bookrent>
gv_class.
Perform write_to_gs USING gt_sched_bookrent
<gs_sched_bookrent>
gv_class.
*&---------------------------------------------------------------------*
*& Form MYEXAMPLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_CARS_BOOKRENT text
* -->P_<GS_CARS_BOOKRENT> text
* <--P_GS_CARS_BOOKRENT text
*----------------------------------------------------------------------*
form MYEXAMPLE using ut_bookrent TYPE ANY TABLE
us_bookrent TYPE ANY
uv_class
Loop on ut_bookrent ASSIGNING <us_bookrent> where rentclass = uv_class.
"Code here
EndLoop.
endform. " WRITE_TO_GS
Code: Alles auswählen.
Perform write_to_gs
USING gt_cars_bookrent
<gs_cars_bookrent>
gv_class.
Code: Alles auswählen.
Perform read_mara
USING ut_mara TYPE mara_tab
ur_mara TYPE REF TO mara.
Hi Rig,RIG hat geschrieben:Ich weiß halt nicht ob ich das so machen kann:
Code: Alles auswählen.
FIELD-SYMBOLS <a> type c.
PERFORM a CHANGING <a>.
FORM a CHANGING a type c.
ENDFORM.
Code: Alles auswählen.
Perform write_to_gs USING gt_cars_bookrent
gt_dummy
Changing gs_cars_bookrent.
Perform write_to_gs USING gt_dummy
gt_sched_bookrent
Changing gs_sched_bookrent.
*&---------------------------------------------------------------------*
*& Form WRITE_TO_GS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_CARS_BOOKRENT text
* -->P_<GS_CARS_BOOKRENT> text
* <--P_GS_CARS_BOOKRENT text
*----------------------------------------------------------------------*
form WRITE_TO_GS using ut_cars_bookrent type any table "tt_cars_bookrent
ut_sched_bookrent type any table " tt_sched_bookrent
changing cs_Structure type any.
field-symbols: <ls_sched_bookrent> type ts_sched_bookrent,
<ls_cars_bookrent> type ts_cars_bookrent.
If ut_cars_bookrent is not INITIAL.
LOOP AT ut_cars_bookrent assigning <ls_cars_bookrent> .
ENDLOOP.
endif.
If ut_sched_bookrent is not INITIAL.
LOOP AT ut_sched_bookrent assigning <ls_sched_bookrent> .
ENDLOOP.
endif.
endform. " WRITE_TO_GS
black_adept hat geschrieben:Da wären aber 2 FORMs lesbarer gewesen.
Code: Alles auswählen.
Select RENTCLASS KENNZEICHEN LAUFLEISTUNG EINHEIT
from ZKOB_CARS
into TABLE ct_cars_bookrent.
Sort ct_cars_bookrent by Rentclass
Kennzeichen DESCENDING .
Perform CountGroupLines Using ut_dummy
ct_cars_bookrent
uv_class_want
CHANGING lv_group_rows_cars.
Code: Alles auswählen.
form COUNTGROUPLINES using ut_sched_bookrent Type any table
ut_cars_bookrent Type any table
uv_class_want type zrig_rentclass
changing cv_rows_count type i.
data: lv_groupfirstrow type i,
lv_grouplastrow type i.
*----------------------------------------------------------------------------------------------------
IF ut_sched_bookrent is not INITIAL.
LOOP AT ut_sched_bookrent ASSIGNING <gs_sched_bookrent> WHERE rentclass = uv_class_want.
AT NEW rentclass.
lv_groupfirstrow = sy-tabix.
ENDAT.
AT END OF rentclass.
lv_grouplastrow = sy-tabix.
ENDAT.
ENDLOOP.
*----------------------------------------------------------------------------------------------------
ElseIF ut_cars_bookrent is not INITIAL.
LOOP AT ut_cars_bookrent ASSIGNING <gs_cars_bookrent> WHERE rentclass = uv_class_want.
AT NEW rentclass.
lv_groupfirstrow = sy-tabix.
ENDAT.
AT END OF rentclass.
lv_grouplastrow = sy-tabix.
ENDAT.
ENDLOOP.
ENDIF.
*----------------------------------------------------------------------------------------------------
IF lv_grouplastrow > 0.
cv_rows_count = lv_grouplastrow - lv_groupfirstrow + 1.
else.
cv_rows_count = 0.
ENDIF.
endform. " COUNTGROUPLINES
Nicht nur lesbarer auch wartbarer.RIG hat geschrieben:Da Sie aber dieselbe Funktion haben und ich hier nicht um doppelten Code herumkomme ist es doch besser der doppelte code steht an einer Stelle oder?black_adept hat geschrieben:Da wären aber 2 FORMs lesbarer gewesen.
Ändere ich die Funktionalität der Funktion, darf ich nicht vergessen die 2. Variante mit zu ändern, das kann jetzt nicht passieren.
Code: Alles auswählen.
field-symbols <data> type any.
field-symbols <value> type any.
*-- ersten Eintrag finden
read table gt_data
with key ('AA') = vergleichswert transporting no fields
if sy-subrc = 0.
lv_tabix = sy-tabix.
lv_anzahl = 1.
do.
add 1 to lv_tabix.
*-- nächsten Eintrag lesen
read table gt_data index lv_tabix assigning <data>.
if sy-subrc = 0.
assign component 'AA' of structure <data> to <value>.
*-- und vergleichen
if sy-subrc = 0 and <vlaue> = vergleichswert.
add 1 to lv_anzahl.
else.
exit. "from do
endif.
endif.
enddo.
endif.
Code: Alles auswählen.
define count_entries.
loop at &1 transporting no fields where &2 = &3.
add 1 to &4.
endloop.
end-of-definition.
Code: Alles auswählen.
count_entries gt_cars aa '2' count1.
count_entries gt_sched aa '2' count2.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
RIG
Genau da steh ich ja wieder vor meinem Problem mit dem Feldsymbol in meiner Form. Wenn es erst zur Laufzeit zugewiesen werden soll und ich es nicht übergeben darf hab ich noch keinen geschmeidigen Einfall.black_adept hat geschrieben:Hi RIG,
....
2.) Loop ... Assigning in ein generisches Feldsymbol ( das dann zur Laufzeit deiner Tabellenzeile entspricht ).
...
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
RIG