BADi zugriff auf Memory

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
20 Beiträge • Seite 1 von 2 (current) Nächste
20 Beiträge Seite 1 von 2 (current) Nächste

BADi zugriff auf Memory

Beitrag von carlie (ForumUser / 49 / 0 / 2 ) »
Hallo,

wir nutzen bei uns im Sales Team den IPC zur Poduktkonfiguration. Ich muss Dynamisch einen Wert aus dem SD Beleg an die SCE übergeben. Als schnittstelle dient hierzu der BADi "ERP_CFG_ADAPT". In diesem BADi möchte ich den Memory "CCPR" auslesen. Im Debugger kann ich den Memory auch sehen. Aber ich schaffe es nicht auf den Memory zuzugreifen. Vielleicht kann mir jemand einen Tipp geben was ich an der Stelle falsch mache.

Gruß, Thorsten

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: BADi zugriff auf Memory

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
SY-SUBRC = 4?
Wie sieht der Export-Befehl aus?

Re: BADi zugriff auf Memory

Beitrag von carlie (ForumUser / 49 / 0 / 2 ) »
Das ist leider auch eines meiner Probleme. Ich finde die Codestelle nicht wo der Memory gefüllt wird!!
Im SD handelt es sich um das Datenelement CC_EFELD. Ich konnte jedoch über den verwendungsnachweis noch nicht die besagte stelle finden.

Re: BADi zugriff auf Memory

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
carlie hat geschrieben:Das ist leider auch eines meiner Probleme. Ich finde die Codestelle nicht wo der Memory gefüllt wird!!
Im SD handelt es sich um das Datenelement CC_EFELD. Ich konnte jedoch über den verwendungsnachweis noch nicht die besagte stelle finden.
Der Klassiker... :D :up:

Dann kapsele als erstes mal den EXPORT und IMPORT in einer eigenen Klasse, damit beides zusammen ist.
Oder verwende eine Klassen-Konstante für die Memory-ID. Dann findet man es über den Verwendungsnachweis sofort wieder.

Um die Aufrufstelle zu finden, kannst du einen Breakpoint bei EXPORT TO MEMORY setzen.
Oder SAPMV45A mit RPR_ABAP_SOURCE_SCAN nach "CCPR" durchsuchen. Nach deiner Beschreibung müsste der Export hier passieren.

Re: BADi zugriff auf Memory

Beitrag von carlie (ForumUser / 49 / 0 / 2 ) »
Ich habe dank deiner Hilfe die Stelle gefunden wo der Memory gefüllt wird. Dies passiert in der Form "Create_Memory" im Include LCCPRF01.

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*&      Form  CREATE_MEMORY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form create_memory.

   export itab_parameter
          save_valid_or_invalid            "Falls Eingabe über Pop Up
          akt_tecs itab_tecn               "Falls Eingabe über TECHS
          akt_aennr akt_prio               "Falls Eingabe über AENNR
          akt_datuv                        "Falls Datum vorhanden
          to memory id 'CCPR'.

endform.                    " CREATE_MEMORY
Vielleicht ist es jetzt einfacher Herauszufinden wie ich den BADi richtig füllen muss.

Gruß, Thorsten

Re: BADi zugriff auf Memory

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Du kannst nur die komplette Datenstruktur wieder einlesen, keine Teilfelder.
Also IMPORT akt_tecs ... FROM MEMORY ID.

Re: BADi zugriff auf Memory

Beitrag von carlie (ForumUser / 49 / 0 / 2 ) »
Ich habe das jetzt mal neu aufgebaut. Die Struktur im Badi wird jedoch weiterhin nicht über den Memory gefüllt.

Der Badi springt beim aufruf IPC schon mal an. SY-SUBRC ist auch immer 0. Irgend etwas übersehe ich wohl an der Stelle.

Code: Alles auswählen.

method IF_EX_ERP_CFG_ADAPT~SET_CONTEXT.

  Data: akt_tect              type tect,
        itab_parameter        type cc01_parameter_type,
        save_valid_or_invalid type cc01_valid_or_invalid_type,
        akt_tecs              type tecs,
        itab_tecn             type tecn,
        akt_aennr             type aenr-aennr,
        akt_prio              type tccet-efftpr,
        akt_datuv             type ccdeco-datub.

* import itab_parameter        to itab_parameter        from memory id 'CCPR'.
* import save_valid_or_invalid to save_valid_or_invalid from memory id 'CCPR'.
  import akt_tecs              to akt_tecs              from memory id 'CCPR'.
* import itab_tecn             to itab_tecn             from memory id 'CCPR'.
  import akt_aennr             to akt_aennr             from memory id 'CCPR'.
  import akt_prio              to akt_prio              from memory id 'CCPR'.
  import akt_datuv             to akt_datuv             from memory id 'CCPR'.

endmethod.

Re: BADi zugriff auf Memory

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
So sieht es aber richtig aus.
die gesamten Strukturen kannst du mit EINEM Import wieder einlesen (Analog zum Export).
Du kannst nur nicht auf einzelne Felder einer exportierten Struktur zugreifen.

Stelle mal sicher, dass die Strukturen tatsächlich gefüllt sind.

Ansonsten kannst du noch Pech haben und die Verarbeitung im IPC/SEC (Was auch immer das sein mag) findet in einem separaten Modus statt (CALL FUNCTION ... STARTING NEW TASK). Dann hast du eine neue LUW und keinen Zugriff mehr auf den SAP-Speicher des anderen Prozesses. Grade erlebt: Da wurde die Verarbeitung der Belege parallelisiert mit Hilfe des Konstruktes STARTING NEW TASK.

Re: BADi zugriff auf Memory

Beitrag von carlie (ForumUser / 49 / 0 / 2 ) »
Hallo,

generell kannst du natürlich recht habe. Die vermutung hatte ich auch schon das der IPC in einem anderen Rahmenprogramm läuft. Die Engine liegt im java Stack und wird über eine RFC verbindung aufgerufen und im VMC im SD Beleg Visualisiert.
Aber um das auszuschließen bin ich weiterhin am testen.

Die Struktur "itab_parameter" wird definitiv gefüllt (siehe Bild). Jetzt bekomme ich beim Badi aufruf einen laufzeitfehler. Angeblich sind die Felddefinitionen nicht gleich. Was ich jetzt leider auch wiederum nicht verstehe.

Struktur Definition in der Typgruppe CC01:

Code: Alles auswählen.

TYPES: BEGIN OF cc01_parameter_type,
         fieldname LIKE dntab-fieldname,
*d       value     LIKE comw-atwrt,                      "note 888589
         value     TYPE cc_effld,                        "note 888589
         text      LIKE tccept-effptext,
         sort      LIKE tccep-sort,
       END OF cc01_parameter_type.
BADI:

Code: Alles auswählen.

method IF_EX_ERP_CFG_ADAPT~SET_CONTEXT.


  data   itab_parameter          type cc01_parameter_type.

  import itab_parameter   to itab_parameter    from memory id 'CCPR'.

endmethod.
Auf jeden fall schon mal danke für die Unterstützung.

Re: BADi zugriff auf Memory

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
carlie hat geschrieben:Die Engine liegt im java Stack und wird über eine RFC verbindung aufgerufen und im VMC im SD Beleg Visualisiert.
Dann kann das nicht funktionieren!

Re: BADi zugriff auf Memory

Beitrag von carlie (ForumUser / 49 / 0 / 2 ) »
Aber genau dafür ist der Badi "ERP_CFG_ADAPT" gedacht. Laut SAP Dokumentation können in dieser Schnittstelle freie Kontextparameter definiert werden.

https://help.sap.com/saphelp_erp60_sp/h ... ameset.htm

Ich denke um das letztlich zu klären muss ich mal eine OSS Meldung öffnen.

Re: BADi zugriff auf Memory

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Das mag ja sein. Aber wo kein gemeinsamer Speicherbereich ist, kannst du mit IMPORT FROM und EXPORT TO MEMORY nicht weiterkommen.
Die Daten müssen dann aus der DB gelesen werden.

Schau beim IMPORT noch mal in dem Reiter "Desktop2" in die Aufrufhierarchie.
Wenn dort das rufende Programm nicht aufgeführt wird, dann kannst du definitiv nicht mit dem SAP-Memory arbeiten.

Re: BADi zugriff auf Memory

Beitrag von carlie (ForumUser / 49 / 0 / 2 ) »
Nochmals danke für deine Hilfe. Im ABAP Stack schaut es Okay aus. Ich starte in Transaktion VA02. Wenn ich es nun richtig vertehe müsste der Memory also im zugriff sein.

Re: BADi zugriff auf Memory

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
JA, das sieht gut aus und sollte funktionieren.

Re: BADi zugriff auf Memory

Beitrag von carlie (ForumUser / 49 / 0 / 2 ) »
Da kann ich die auch nur zustimmen. Ich habe langsam auch keine Ideen mehr warum die Struktur nicht passt.

Vergleichbare Themen

9
Antw.
1097
Views
ABAP Memory ID
von ZF_SAPler » 22.06.2022 16:54 • Verfasst in ABAP® für Anfänger
8
Antw.
2357
Views
ABAP Memory
von Adrian » 11.02.2013 09:36 • Verfasst in ABAP® für Anfänger
8
Antw.
6805
Views
Convert SAP Memory to PDF
von Knirpsi » 18.01.2012 16:46 • Verfasst in ABAP® Core
21
Antw.
4457
Views
export to Memory ID
von A6272 » 19.04.2018 12:02 • Verfasst in ABAP® für Anfänger
6
Antw.
2740
Views
ABAP-Memory auslesen
von ihrken » 13.12.2006 10:56 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

SELECT CHAR16 in CHAR12-Feld
vor einer Stunde von Patrick1982 gelöst 5 / 56
alv_grid aktualisieren
vor 6 Stunden von Egzon gelöst 4 / 82

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

SELECT CHAR16 in CHAR12-Feld
vor einer Stunde von Patrick1982 gelöst 5 / 56
alv_grid aktualisieren
vor 6 Stunden von Egzon gelöst 4 / 82

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 170