SAP Jobsuche bei DV-Treff
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo,

wer kann hier mal drauf schauen. Es erfolgt immer eine Fehlermeldung an der Stelle des Smileys mit der Aussage, dass eine abweichende Parameterzahl  in FORM und PERFORM (Routine: FILL_ITAB, Anzahl formaler Parameter: 1 , Anzahl aktueller Parameter: 2) existiert. Irgendwie gucke ich wahrscheinlich schon zu lange drauf...
Danke
dello


REPORT  ZBC400_51_FORMS.
*Def. Konstante zur Übergabe von sy-subrc zurück an Rahmenprogramm,denn
*Berechtigungsprüfung findet im U-Prog. statt und der Wert muß zurück
*ins Rahmenprogramm, denn dort wird entschieden über IF was passiert
*wenn sy-subrc=0

constants activate_disp TYPE activ_auth VALUE '03'.

DATA: itab_flight TYPE sbc400_t_sbc400focc.
DATA: subrc LIKE sy-subrc.
PARAMETERS: pa_car TYPE s_carr_id.

START-OF-SELECTION.

PERFORM auth_check USING pa_car
                        activate_disp
                  CHANGING subrc.
 IF subrc = 0.
   PERFORM  ???fill_itab USING pa_car
                     CHANGING itab_flight.
 
         SORT itab_flight BY percentage.
 
   PERFORM write_itab USING itab_flight.
 
 ENDIF.

*&---------------------------------------------------------------------*
*&      Form  FILL_ITAB
*&---------------------------------------------------------------------*

FORM fill_itab USING VALUE(iv_carrid) TYPE S_CARR_ID.
              CHANGING ct_flight TYPE sbc400_t_sbc400focc.
DATA ls_flight TYPE sbc400focc.      " local structure

 SELECT carrid connid fldate seatsmax seatsocc FROM sflight INTO
 CORRESPONDING FIELDS OF TABLE ct_flight WHERE carrid = iv_carrid.
   IF sy-subrc = 0.
       LOOP AT ct_flight INTO ls_flight.
* Berechnung der prozentualen Flugauslastung
         ls_flight-percentage = ls_flight-seatsocc * 100 /            
         ls_flight-seatsmax.
        MODIFY ct_flight FROM ls_flight INDEX sy-tabix
          TRANSPORTING percentage.
       ENDLOOP.
   ENDIF.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  WRITE_ITAB
*&---------------------------------------------------------------------*

FORM write_itab USING it_flight TYPE sbc400_t_sbc400focc.
DATA: ls_flight TYPE sbc400focc.

ULINE.

*Ausgabe Listenüberschriften

write: /1(10)  'Fluggesellschaft' COLOR Col_NORMAL,
       19(12) 'Flugnummer'       COLOR Col_KEY,
       31(7)  'Datum'            COLOR Col_TOTAL,
       46(12) 'Sitze(max.)'      COLOR Col_POSITIVE,
       61(13) 'Sitze(geb.)'      COLOR Col_NEGATIVE,
       74(16) 'Flugauslastung'   COLOR Col_GROUP,
       90(3)  '%' COLOR          Col_BACKGROUND.
SKIP.
ULINE.

*Ausgabe in einer Liste mit Berechnungsfeld und Prozentangabe

LOOP AT it_flight INTO ls_flight.
 
   WRITE AT: /1(10) ls_flight-carrid COLOR COL_Key,
             19(12) ls_flight-connid COLOR COL_Key,
             31(7)  ls_sflight-fldate COLOR COL_Key,
             38(12) ls_sflight-seatsmax,
             52(13) ls_sflight-seatsocc,
             68(12) ls_sflight-percentage,
             90(3) '%'.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  AUTHORITY_SCARRID
*&---------------------------------------------------------------------*

FORM auth_check USING VALUE(iv_carrid) TYPE S_CARR_ID
                     VALUE(iv_actvt) TYPE activate_disp
               CHANGING cv_return LIKE sy-subrc.

AUTHORITY-CHECK OBJECT 'S_CARRID'
        ID 'carrid' FIELD 'iv_carrid'
        ID 'ACTVT' FIELD 'iv_actvt'.
     cv_return = sy-subrc.  
IF sy-subrc ne 0.

MESSAGE E003(ZBC400_51) WITH pa_car.
ENDIF.
ENDFORM.
danielA.
vor 20 Jahre
Hallo Dello,

Du steigst ja richtig ein 😉.

In Deinem Unterprogramm 'FORM fill_itab' ist ein Punkt am Ende der Zeile, vielleicht hilft es ja wenn Du den erst mal entfernst.

Gruß
Daniel A.
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo danielA,

oh man danke, ich habs einfach nicht mehr gesehen. komischerweise hat mir die Fehlerprüfung den oben beschriebenen Fehler angezeigt, obwohl es doch so einfach gewesen wäre. es waren ansonsten noch ein paar kleine schreibfehler drin, aber die waren schnell gefunden.
Irgendwas stimmt mit dem Authority Chekc noch nicht, aber das muß ich dann erstmal ergründen - ich erhalte für keine carrid eine Berechtigung, ich weiß irgendwie nicht, warum der Returncode '4' immer zurückkommt.

Noch mal ne Frage: Kann es sein, das das erfolgreiche ABlaufen eines Programmes von den sog. INCLUDES abhängig ist? Bei einigen Beispielprogrammen, die ich habe ist es so, dass wenn ich in den Debug_MOdus gehe, der eigentliche Programmcode gar nicht mehr zu sehen ist - hier gibt es keinerlei definierte Tabellen, constanten oder sonst irgendwas - alles "Zeug" das rein namentlich/wörtlich mit dem eigentlichen Programmcode nichts zu tun hat. Ich denke hier daran, das es vielleicht daran liegt, dass mein Authority Chekc schief läuft, da hier was fehlt.


dello  
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo,

nun kann ich mir auch mal selbst antworten. Ich habe den Fehler beim Authority-Check gefunden. Es lag einfach daran, dass ich das Feld kleingeschrieben habe:
<ID 'carrid' FIELD iv_carrid> --> <ID 'CARRID' FILED iv_carrid>

ich farge mich nur, weshalb das Prüfprogramm das nicht gefunden hat, auch in der Schlüsselwortdokumentation stand das nicht explizit da, das man Großschreibung verwenden muß.

dello
danielA.
vor 20 Jahre
moin dello,

na ja, die fehlermeldung war doch richtig.

das mit der groß.- und kleinschreibung bei sap ist nicht wirklich durchgängig..........oder ich bin noch nicht dahinter gestiegen 😉.

gruß
daniel A.
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo danielA,

ja da hast du natürlich recht, das mit dem Punkt war dann schon richtig.
Aber gerade beim Programmcode sollte doch Einheitlichkeit gewahrt werden, sonst hat man es ja als Einsteiger doppelt schwer. Warum haben die das dann nicht in diesen PrettyPrinter eingebaut, soll der doch die Schlüsselwörter und Feldbezeichnungen usw. formatieren. Mir hat das Ding bis jetzt noch nicht so viel geholfen, denn was es bisher gemacht hat, war eher hinderlich, dieser schob meine eingerückten Kommentare immer an den linken Rand.
Mit der Groß/Kleinschreibung müssen die echt was machen, das war mir schon aufgefallen, wenn man irgendwas gesucht hatte und man konnte sich nie sicher sein, ist das Objekt wirklich nicht da, oder muß ich meinen Suchtext ändern.

Und da fällt mir noch was ein: Wenn man eine Verzweigungsliste hat, im einfachsten Falle springe von Liste 1 auf Liste 2, kann man doch auch Listüberschriften bzw. Spaltenüberschriften eingeben (bei fertiger Liste über SYSTEM->Liste->Listüberschriften), allerdings wird für Liste 1 genau dieselbe Überschrift benutzt wie für Liste 2. Wie kriege ich hin, das er mir auf beiden Listen unterschiedliche Überschriften ausgibt. Alternativ kann ich die auch als write mit ausgeben, aber geht es auch auf anderem Wege?


dello
danielA.
vor 20 Jahre
hallo dello,

ich gehe mal davon aus, dass du ein 'line selection' meinst.......in sachen liste?!
da kann ich dir auch nicht weiterhelfen, ich nehme heute lieber den alv-listviewer. ob der dir bei deinem problem allerdings helfen würde weiß ich nicht.

wahrscheinlich würde man in solch einem fall hart codieren, aber verlass dich mal nicht auf diese aussage.

auf www.apab-fans.de ist eine höhre besucherzahl und es geht nur um abap. ich mach ja nicht so viel abap, die jungs dort haben aber auf alle fälle besser drauf und sind in den punkten glaubwürdiger 😉. dort laß ich mir auch helfen.

gruß
daniel A.