view_maintenance_call Fehler: no_oc_found

Getting started ... Alles für einen gelungenen Start.
19 Beiträge • Seite 1 von 2 (current) Nächste
19 Beiträge Seite 1 von 2 (current) Nächste

view_maintenance_call Fehler: no_oc_found

Beitrag von STDIN (ForumUser / 17 / 6 / 0 ) » 24.02.2020 11:31
Hallo zusammen,

ich habe über meinen Report eine Transaktion gelegt und bei der Ausführung zeigt dieser mir meine Tabelle mit den dazugehörigen Werten an. Zudem habe ich zwei Buttons eingefügt mit Eintrag löschen und Eintrag hinzufügen. Über den Button 'Eintrag hinzufügen' wird die Fkt. VIEW_MAINTENACE_CALL aufgerufen und soll somit in die SM30 wechseln. Hierbei bricht allerdings mein Programm ab, da es in der Klasse CL_VIEWFIELDS_ORG_CRIT - Constructor zu einem Fehler kommt --> no_oc_found (Keine Organisationskriterien gefunden).
Kann mir hierbei jemand helfen bzw. Tipps geben, wie ich diesen beheben kann?


Re: view_maintenance_call Fehler: no_oc_found

Beitrag von DeathAndPain (Top Expert / 1329 / 144 / 313 ) » 25.02.2020 08:19
Zu wenig Info. Kein aufrufender Code im Text; Du nennst noch nicht mal die Methode innerhalb der Klasse, die den Fehler wirft.

Re: view_maintenance_call Fehler: no_oc_found

Beitrag von STDIN (ForumUser / 17 / 6 / 0 ) » 25.02.2020 08:46
Es ist die Methode get_oc_fields_for_table, welche aufgerufen wird. Mein sy-subrc = 2. View_name und view_fields werden übergeben, allerdings steht in der Tabelle oc_found_tab nichts innen.
Habe allerdings gelesen, dass über die Organisationskriterien die Zeilenberechtigung eingestellt wird. Kann das nicht irgendwie einfach übergangen werden, sodass jeder Berechtigte den ich festlege in jeder Zeile der Tabelle Änderungen durchführen darf?

Code: Alles auswählen.

CALL METHOD oc_viewfields->get_oc_fields_for_table
      EXPORTING
        view_name      = me->view_name
      IMPORTING
        oc_found_tab   = oc_found_tab
      CHANGING
        view_fields    = view_fields
      EXCEPTIONS
        view_not_found = 1
        no_oc_found    = 2.
    CASE sy-subrc.
      WHEN 1.
        RAISE view_not_found.
      WHEN 2.
        RAISE no_oc_found.
    ENDCASE.
* note: view_fields sorted descending now
    INSERT LINES OF view_fields INTO TABLE me->viewfields.

Re: view_maintenance_call Fehler: no_oc_found

Beitrag von ST22 (Specialist / 249 / 28 / 30 ) » 25.02.2020 09:04
Hast du für deine Tabelle einen Pflegedialog generiert? Kannst du deine Tabelle pflegen, indem du sofort die SM30 aufrufst?

Re: view_maintenance_call Fehler: no_oc_found

Beitrag von STDIN (ForumUser / 17 / 6 / 0 ) » 25.02.2020 09:14
Ja, einen Pflegedialog habe ich generiert und kann diese auch wie üblich über die SM30 pflegen.

Re: view_maintenance_call Fehler: no_oc_found

Beitrag von DeathAndPain (Top Expert / 1329 / 144 / 313 ) » 25.02.2020 11:03
Die von Dir genannte Klasse CL_VIEWFIELDS_ORG_CRIT hat überhaupt keine Methode namens get_oc_fields_for_table. Das passt alles nicht zusammen, was Du hier schreibst. Außerdem wollte ich gerne Deinen Code sehen, der den FB VIEW_MAINTENANCE_CALL aufruft, nicht irgendein Codefragment aus dem SAP-Standard.

Re: view_maintenance_call Fehler: no_oc_found

Beitrag von STDIN (ForumUser / 17 / 6 / 0 ) » 25.02.2020 11:41
Da habe ich mich wohl vertan ... die Methode gehört zu CL_OC_ATTR_VIEWFIELDS...

So rufe ich ihn auf:

Code: Alles auswählen.

clear: gt_sellist[].
gw_sellist-viewfield = 'USER'.
*gw_sellist-and_or = 'AND'.
gw_sellist-operator = 'EQ'.
gw_sellist-value = 'BENUTZER'.

            CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
              EXPORTING
                action                               = 'U'
                view_name                            =
'ZACTIVITIES_VIEW'
 TABLES
   DBA_SELLIST                          =  gt_sellist 
             EXCEPTIONS
               client_reference                     = 1
               foreign_lock                         = 2
               invalid_action                       = 3
               no_clientindependent_auth            = 4
               no_database_function                 = 5
               no_editor_function                   = 6
               no_show_auth                         = 7
               no_tvdir_entry                       = 8
               no_upd_auth                          = 9
               only_show_allowed                    = 10
               system_failure                       = 11
               unknown_field_in_dba_sellist         = 12
               view_not_found                       = 13
               maintenance_prohibited               = 14
               OTHERS                               = 15
                      .
            IF sy-subrc <> 0.
*              EXIT.
            ENDIF.

Re: view_maintenance_call Fehler: no_oc_found

Beitrag von DeathAndPain (Top Expert / 1329 / 144 / 313 ) » 26.02.2020 12:43
Ich würde vermuten, dass an dem Inhalt Deiner Tabelle irgendwas nicht stimmt. Versuch doch mal, den Baustein ohne den Tabellenparameter aufzurufen, also einfach nur:

Code: Alles auswählen.

CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
  EXPORTING
    action = 'U'
    view_name = 'ZACTIVITIES_VIEW'.

Re: view_maintenance_call Fehler: no_oc_found

Beitrag von STDIN (ForumUser / 17 / 6 / 0 ) » 26.02.2020 13:02
Die Vermutung hatte ich auch schon, der Fehler bleibt allerdings trotzdem bestehen.

Re: view_maintenance_call Fehler: no_oc_found

Beitrag von DeathAndPain (Top Expert / 1329 / 144 / 313 ) » 26.02.2020 13:19
Na ja, die Methode CL_OC_ATTR_VIEWFIELDS->GET_OC_FIELDS_FOR_TABLE ist ja relativ einfach und übersichtlich. Offensichtlich wird diese Methode den von Dir beobachteten Fehler werfen, wenn Dein View nicht in der Tabelle ORGCRFLD drinsteht. Diese kannst Du Dir zwar nicht direkt mit der SE16 anschauen, wohl aber durch die kalte Küche, indem Du in der SE37 den Funktionsbaustein SE16N_INTERFACE "testest" und ihm als (einzigen) Parameter I_TAB mit dem Wert ORGCRFLD mitgibst.

In der Tabelle stehen nur wenige Einträge drin, und sie sind alle SAP-Standard. Unsere selbst angelegten Customizingtabellen stehen da auch nicht drin. Gleichwohl funktioniert bei uns der FB VIEW_MAINTENANCE_CALL. Das lässt nur den einen Schluss zu, dass die Methode für eigene Pflegeviews gar nicht erst aufgerufen werden sollte. Da dies bei Dir aber doch passiert, muss nach meinem Dafürhalten irgendwas an dem Pflegedialog im Tabellenpflegegenerator schief sein.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
STDIN (26.02.2020 15:37)


Re: view_maintenance_call Fehler: no_oc_found

Beitrag von a-dead-trousers (Top Expert / 3391 / 102 / 867 ) » 26.02.2020 13:33
Kann es sein, dass es sich bei ZACTIVITIES_VIEW um einen Pflege-View mit Feldern handelt die das Pflegemerkmal "Subset" gesetzt haben?

Ganz leicht festzustellen, indem man den Pflegedialog über die Transaktion SM30 aufruft und dann kommt ein Auswahlpopup "Arbeitsbereich festlegen".

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
STDIN (26.02.2020 15:52)

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: view_maintenance_call Fehler: no_oc_found

Beitrag von ewx (Top Expert / 4167 / 185 / 429 ) » 26.02.2020 13:34
STDIN hat geschrieben:
25.02.2020 11:41
So rufe ich ihn auf:

clear: gt_sellist[].
gw_sellist-viewfield = 'USER'.
*gw_sellist-and_or = 'AND'.
gw_sellist-operator = 'EQ'.
gw_sellist-value = 'BENUTZER'.
gt_sellist scheint leer zu sein...?!
Spendiere deinem Programm mal einen APPEND...

Re: view_maintenance_call Fehler: no_oc_found

Beitrag von ewx (Top Expert / 4167 / 185 / 429 ) » 26.02.2020 13:41
a-dead-trousers hat geschrieben:
26.02.2020 13:33
Kann es sein, dass es sich bei ZACTIVITIES_VIEW um einen Pflege-View mit Feldern handelt die das Pflegemerkmal "Subset" gesetzt haben?

Ganz leicht festzustellen, indem man den Pflegedialog über die Transaktion SM30 aufruft und dann kommt ein Auswahlpopup "Arbeitsbereich festlegen".
Guter Hinweis!

Re: view_maintenance_call Fehler: no_oc_found

Beitrag von DeathAndPain (Top Expert / 1329 / 144 / 313 ) » 26.02.2020 14:20
ewx hat geschrieben:gt_sellist scheint leer zu sein...?!
Spielt ja keine Rolle, da sein Problem auch dann fortbesteht, wenn er die Tabelle gar nicht übergibt. Das mache ich bei dem FB aber immer so; das funktioniert.

Re: view_maintenance_call Fehler: no_oc_found

Beitrag von a-dead-trousers (Top Expert / 3391 / 102 / 867 ) » 26.02.2020 14:27
DeathAndPain hat geschrieben:
26.02.2020 14:20
ewx hat geschrieben:gt_sellist scheint leer zu sein...?!
Spielt ja keine Rolle, da sein Problem auch dann fortbesteht, wenn er die Tabelle gar nicht übergibt. Das mache ich bei dem FB aber immer so; das funktioniert.
Siehe meinen Kommentar viewtopic.php?f=1&t=24205#p94979

Wenn ein Subset aktiv ist, MUSS man im Viewcluster diese Daten übergeben, weil sonst das Popup für den "Arbeitsbereich" hochkommt. Von der Meldung her ("Keine Organisationskriterien gefunden") würde ich darauf schließen, dass das genau der Fehler ist der den korrekten Aufruf von VIEW_MAINTENANCE_CALL verhindert.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
DeathAndPain (26.02.2020 14:39)

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40