Klassen und Merkmale herauslesen

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
69 Beiträge • Vorherige Seite 3 von 5 (current) Nächste
69 Beiträge Vorherige Seite 3 von 5 (current) Nächste

Re: Klassen und Merkmale herauslesen

Beitrag von ewx (Top Expert / 4884 / 317 / 644 ) »
ewx hat geschrieben:Nach Feld "INSTANCE" kommt das Feld VALUE_NEUTRAL... 8)
VALUE_NEUTRAL!!

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


Re: Klassen und Merkmale herauslesen

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
ewx hat geschrieben:
ewx hat geschrieben:Nach Feld "INSTANCE" kommt das Feld VALUE_NEUTRAL... 8)
VALUE_NEUTRAL!!
Versteh ich im Moment nicht was gemeint ist. Habe den FuBa nach einträgen INSTANCE und VALUE_NEUTRAL durchsucht aber nichts gefunden!

Wie soll ich die Hilfe verstehen?

Dieser kommt nur dort vor und ist direkt in der FuBA eingebaut.
value_.JPG
Zuletzt geändert von commolus am 28.08.2012 15:46, insgesamt 1-mal geändert.

Re: Klassen und Merkmale herauslesen

Beitrag von ewx (Top Expert / 4884 / 317 / 644 ) »
Das ist so zu verstehen, dass du dir die Rückgabetabelle noch mal genauer anschauen sollst!

Re: Klassen und Merkmale herauslesen

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
Diesen FuBa kann ich nur mit Entwicklerschlüssel ändern

Re: Klassen und Merkmale herauslesen

Beitrag von ewx (Top Expert / 4884 / 317 / 644 ) »
ewx hat geschrieben:Das ist so zu verstehen, dass du dir die Rückgabetabelle noch mal genauer anschauen sollst!

Re: Klassen und Merkmale herauslesen

Beitrag von JHM (Top Expert / 1209 / 1 / 202 ) »
commolus hat geschrieben:Wie soll ich die Hilfe verstehen?
Halt mal an dieser Stelle im Debugger an:

Code: Alles auswählen.

CASE ls_charact_values-charact.
Dann schaust du dir einemal die Struktur ls_charact_values an. Insbesondere welche Felder diese Struktur hat.
Dann schaust du dir noch einmal die ITAB lt_charact_values an. Versuch mal zu verstehen wie die Structur und die ITAB zusammen hängen.

Danach solltest du EWX Hinweis verstanden haben.
Gruß Hendrik

Re: Klassen und Merkmale herauslesen

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
Ich glaub ich habs verstanden!

Im Feld VALUE_NEUTRAL stehen die falschen Zahlen.
API_VAL_R.JPG
Hier steht der gleiche Wert wie bei Value
1.JPG
Die Data-Anweisung sollte noch stimmen
2.JPG
In der Tabelle LT_... werden schon die Werte mit der Maßeinheit gezogen

Re: Klassen und Merkmale herauslesen

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
3.JPG
Daher wird die LS_... ebenfalls falsch befüllt
4.JPG
Und es kommt zum Dump.

Soweit ist mir das schon bewusst. Nur wie kann ich dies vermeiden. Hab ich einen falschen FuBa? Ich hab den FuBa in der SE37 mir angesehen und konnte ihn aber nie ändern um auf das gewünschte Ergebnis zu kommen.

LG

Re: Klassen und Merkmale herauslesen

Beitrag von ewx (Top Expert / 4884 / 317 / 644 ) »
hm. Das hätte ich nicht erwartet...
Nimm den Baustein BAPI_OBJCL_GETDETAIL, der liefert in Rückgabetabelle ALLOCVALUESNUM auf jeden Fall den numerischen Wert.
Aufruf ist sehr ähnlich dem CACL_OBJECT_READ_VALIDATION, nur werden in dem BAPI die Werte je nach Typ in anderen Übergabetabellen zurück geliefert.
Von Berechnungen und SPLIT etc. auf "12.345,56 mm" rate ich dir ab.

Re: Klassen und Merkmale herauslesen

Beitrag von black_adept (Top Expert / 4131 / 130 / 955 ) »
Vielleicht ist das Merkmal gar nicht als Zahl angelegt sondern der Merkmalswert ist tatsächlich 1,50 mm (Text).
Poste doch bitte mal die Merkmals- und Wertedefintionen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Klassen und Merkmale herauslesen

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
1.1.JPG
1.2.JPG

Re: Klassen und Merkmale herauslesen

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
bzw.
1.3.JPG

Re: Klassen und Merkmale herauslesen

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
ewx hat geschrieben:hm. Das hätte ich nicht erwartet...
Nimm den Baustein BAPI_OBJCL_GETDETAIL, der liefert in Rückgabetabelle ALLOCVALUESNUM auf jeden Fall den numerischen Wert.
Aufruf ist sehr ähnlich dem CACL_OBJECT_READ_VALIDATION, nur werden in dem BAPI die Werte je nach Typ in anderen Übergabetabellen zurück geliefert.
Von Berechnungen und SPLIT etc. auf "12.345,56 mm" rate ich dir ab.

Wie soll ich den BAPI befüllen
Objektschlüssel (ObjectKey) = Materialnummern mit Nullen auffüllen
Objekttabelle (ObjectTable) = MARA
Klassennamen (ClassNum) = Z_TRDA
Klasssenart (ClassType) = 001

Stimmt diese Zuordnung? Bzw. was soll bei ObjectKey eingetragen werden?

Danke

Re: Klassen und Merkmale herauslesen

Beitrag von black_adept (Top Expert / 4131 / 130 / 955 ) »
Die SE37 hat eine Funktion, mit der man einen Funtionsbaustein testen kann.
Du kannst deine Frage doch einfach durch Ausprobieren rausbekommen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Klassen und Merkmale herauslesen

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
Warum werden keine Werte übergeben?

Bis zum BAPI_ sieht alles gut aus.

Bis zum ls_allocvaluesnum-value_from sieht auch noch alles gut aus. Es werden die richtigen Werte gezogen.

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  Z_TRDA_BER
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  z_trda_ber.

*&---------------------------------------------------------------------*
*& Selektion auf die Materialnummern
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

PARAMETERS pa_matnr TYPE matnr.

*&---------------------------------------------------------------------*
*& Deklarierung der Tabellen
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

DATA: lt_allocvaluesnum        LIKE bapi1003_alloc_values_num OCCURS 0,
      ls_allocvaluesnum         LIKE LINE OF lt_allocvaluesnum,
      lt_allocvalueschar       LIKE bapi1003_alloc_values_char  OCCURS 0,
      ls_allocvalueschar      LIKE LINE OF lt_allocvalueschar,
      lv_charact_value(100),
      lt_allocvaluescurr LIKE bapi1003_alloc_values_curr OCCURS 0,
      ls_allocvaluescurr LIKE LINE OF lt_allocvaluescurr,
      lt_charact_values_cond  LIKE api_val_r  OCCURS 0,
      pvi_matnr LIKE mara-matnr,
      lt_return LIKE bapiret2 OCCURS 0.

CLEAR lt_allocvaluesnum.
CLEAR lt_allocvalueschar.
CLEAR lt_allocvaluescurr.


APPEND ls_allocvaluesnum TO lt_allocvaluesnum.
APPEND ls_allocvalueschar TO lt_allocvalueschar.
APPEND ls_allocvaluescurr TO lt_allocvaluescurr.
TYPES: BEGIN OF ts_merkmale,
         z_trda_0010 TYPE p DECIMALS 2, "für jedes Merkmal aus der Formel ein Feld einfügen!
         z_trda_0020 TYPE p DECIMALS 2,
         z_trda_0045 TYPE p DECIMALS 2,
         z_trda_0050 TYPE p DECIMALS 2,
         z_trda_0055 TYPE p DECIMALS 2,
         z_trda_0070 TYPE p DECIMALS 2,
         z_trda_0075 TYPE p DECIMALS 2,
         z_trda_0080 TYPE p DECIMALS 2,
         z_trda_0090 TYPE p DECIMALS 2,
         z_trda_0095 TYPE p DECIMALS 2,
         z_trda_0150 TYPE p DECIMALS 2,
         z_trda_0155 TYPE p DECIMALS 2,
         z_trda_0160 TYPE p DECIMALS 2,
         z_trda_0165 TYPE p DECIMALS 2,
         z_trda_0170 TYPE p DECIMALS 2,
         z_trda_0175 TYPE p DECIMALS 2,
         z_trda_0180 TYPE p DECIMALS 2,
         z_trda_0185 TYPE p DECIMALS 2,
         z_trda_0855 TYPE p DECIMALS 2,
       END OF ts_merkmale.
DATA: ls_merkmale TYPE ts_merkmale.
*&---------------------------------------------------------------------*
*& Aufruf des FuBa
*&---------------------------------------------------------------------*
*& Der FuBa sollte funktionieren, die daten liegen nach dem Funktionsbaustein in der Tabelle lt_charact_values
CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
  EXPORTING
    objectkey              = '000000000000506236'
    objecttable            = 'MARA'
    classnum               = 'Z_TRDA'
    classtype              = '001'
*   KEYDATE                = SY-DATUM
*   UNVALUATED_CHARS       = ' '
*   LANGUAGE               = SY-LANGU
* IMPORTING
*   STATUS                 =
*   STANDARDCLASS          =
  TABLES
    allocvaluesnum         = lt_allocvaluesnum
    allocvalueschar        = lt_allocvalueschar
    allocvaluescurr        = lt_allocvaluescurr
    return                 = lt_return.
*&---------------------------------------------------------------------*
*& Ab hier entsteht nun die Berechnung
*&
*&---------------------------------------------------------------------*
"CLEAR: ls_merkmale.
DATA: it_min TYPE p LENGTH 5 DECIMALS 2,
      it_max TYPE p LENGTH 5 DECIMALS 2.
LOOP AT lt_allocvaluesnum INTO ls_allocvaluesnum.
  CASE ls_allocvaluesnum-charact.
    WHEN 'z_trda_0010'.
      ls_merkmale-z_trda_0010 = ls_allocvaluesnum-value_from.
    WHEN 'z_trda_0020'.
      ls_merkmale-z_trda_0020 = ls_allocvaluesnum-value_from.
    WHEN 'z_trda_0045'.
      ls_merkmale-z_trda_0045 = ls_allocvaluesnum-value_from.
    WHEN 'z_trda_0050'.
      ls_merkmale-z_trda_0050 = ls_allocvaluesnum-value_from.
    WHEN 'z_trda_0075'.
      ls_merkmale-z_trda_0075 = ls_allocvaluesnum-value_from.
    WHEN 'z_trda_0055'.
      ls_merkmale-z_trda_0055 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0070'.
      ls_merkmale-z_trda_0070 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0080'.
      ls_merkmale-z_trda_0080 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0090'.
      ls_merkmale-z_trda_0090 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0095'.
      ls_merkmale-z_trda_0095 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0150'.
      ls_merkmale-z_trda_0150 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0155'.
      ls_merkmale-z_trda_0155 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0160'.
      ls_merkmale-z_trda_0160 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0165'.
      ls_merkmale-z_trda_0165 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0170'.
      ls_merkmale-z_trda_0170 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0175'.
      ls_merkmale-z_trda_0175 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0180'.
      ls_merkmale-z_trda_0180 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0185'.
      ls_merkmale-z_trda_0185 = ls_allocvaluesnum-value_from.
      WHEN 'z_trda_0855'.
      ls_merkmale-z_trda_0855 = ls_allocvaluesnum-value_from.

    WHEN OTHERS.
      CONTINUE.
  ENDCASE.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Ab hier entsteht nun die Berechnung
*&
*&---------------------------------------------------------------------*
*& Die Daten liegen in lt_charact_values;
*&---------------------------------------------------------------------*

* Jetzt rechnen mit den Merkmalen aus der Struktur:

BREAK-POINT.

it_min = ( ( ls_merkmale-z_trda_0045 - ( ( ls_merkmale-z_trda_0090 * ( ls_merkmale-z_trda_0010 *
ls_merkmale-z_trda_0010 ) + ls_merkmale-z_trda_0095 *
( ls_merkmale-z_trda_0020 * ls_merkmale-z_trda_0020 ) ) * '3.14' / 4 * ls_merkmale-z_trda_0080 ) -
 ( ls_merkmale-z_trda_0170 * ls_merkmale-z_trda_0175 + ls_merkmale-z_trda_0180 *
ls_merkmale-z_trda_0185 + ls_merkmale-z_trda_0160 * ls_merkmale-z_trda_0165 +
ls_merkmale-z_trda_0150 * ls_merkmale-z_trda_0155 ) ) * ls_merkmale-z_trda_0070 *
ls_merkmale-z_trda_0075 ) * '0.000000001' * ls_merkmale-z_trda_0855 + '0.4' +
ls_merkmale-z_trda_0855 * ( ( ( ( ls_merkmale-z_trda_0010 + '0.2' ) * (
ls_merkmale-z_trda_0010 + '0.2' ) * '3.14' / '4' ) - ( ls_merkmale-z_trda_0010 * ls_merkmale-z_trda_0010 *
'3.14' / '4' ) ) * '0.000001' ) * (
ls_merkmale-z_trda_0050 + ls_merkmale-z_trda_0055 - ( ( ls_merkmale-z_trda_0070 * '0.001' ) *
( ls_merkmale-z_trda_0080 * ls_merkmale-z_trda_0090 + ls_merkmale-z_trda_0080 *
ls_merkmale-z_trda_0095 ) * ls_merkmale-z_trda_0075 ) ).


"it_max = ( (

*it_min = ls_merkmale-Z_TRDA_0980 * ls_merkmale-Z_TRDA_1065 * .......
* it_min = ls_merkmale-Z_TRDA_0980 * ls_merkmale-Z_TRDA_1065 *
*'1.02' * ls_merkmale-Z_TRDA_0005 * ls_merkmale-Z_TRDA_0005 * '3,14' / '4' *
*ls_merkmale-Z_TRDA_0090 / ( ls_merkmale-Z_TRDA_0005 * ls_merkmale-Z_TRDA_0005 * '3.14' )
*/ '4' * ls_merkmale-Z_TRDA_0090 + ls_merkmale-Z_TRDA_0015 * ls_merkmale-Z_TRDA_0015 * '3,14'  /
*( '4' * ls_merkmale-Z_TRDA_0095 ) .

*&---------------------------------------------------------------------*
*& Ab hier entsteht nun die Ausgabe
*&
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*

WRITE: pa_matnr, it_min, it_max.
CLEAR: ls_merkmale.
1.JPG
es kommen jedoch keine Werte bei ls_merkmale an!!!!!

Wieso?? Ich habe zuvor mit einer kleineren Formel probiert, da hat es geklappt. Nun bei der größeren werden keine Werte mehr übernommen!!

Danke
Zuletzt geändert von commolus am 30.08.2012 14:02, insgesamt 1-mal geändert.

Vergleichbare Themen

20
Antw.
5745
Views
Globale Klassen oder Lokale Klassen
von ZF_SAPler » 29.11.2022 13:47 • Verfasst in ABAP® für Anfänger
9
Antw.
6491
Views
Lokale Klassen in globalen Klassen
von ralf.wenzel » 20.04.2020 22:55 • Verfasst in ABAP Objects®
1
Antw.
5200
Views
Klassifizierung und Merkmale
von JohnLocklay » 25.08.2017 08:31 • Verfasst in ABAP® Core
0
Antw.
1003
Views
Rubrikunterteilung der Merkmale
von liberado » 23.04.2007 14:24 • Verfasst in ABAP® Core
0
Antw.
1475
Views
Merkmale Klassifizierung
von SUSI » 22.08.2005 08:16 • Verfasst in Sales and Distribution

Aktuelle Forenbeiträge

BAPI_GOODSMVT_CREATE
vor 2 Tagen von waltersen 4 / 448
SAP GUI Installation Probleme
vor 6 Tagen von Romaniac gelöst 2 / 854
Erweiterung in ME51N/ME52N:
vor einer Woche von ABAPlerv 1 / 1021

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

BAPI_GOODSMVT_CREATE
vor 2 Tagen von waltersen 4 / 448
SAP GUI Installation Probleme
vor 6 Tagen von Romaniac gelöst 2 / 854
Erweiterung in ME51N/ME52N:
vor einer Woche von ABAPlerv 1 / 1021

Unbeantwortete Forenbeiträge

Erweiterung in ME51N/ME52N:
vor einer Woche von ABAPlerv 1 / 1021
Erweiterung in ME51N/ME52N:
vor einer Woche von ABAPlerv 1 / 941