Klassen und Merkmale herauslesen

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

Re: Klassen und Merkmale herauslesen

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
Hab ich gemacht. Nun kommt es wieder zu dem weiter oben beschriebenen Fehler und keinem Dump!
1.JPG
Problem wie schon weiter oben beschrieben. Im Customizing ist die Materialnummer auf 10 Stellen begrenzt worden. Die SAP interne hat jedoch 18 Stellen. Wie bring ich den Fuba nun dazu diesen unterschied zu übergehen, OHNE die Customizingeinstellungen zu ändern!?

Sicht auf die OMSL.
2.JPG

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


Re: Klassen und Merkmale herauslesen

Beitrag von black_adept (Top Expert / 4131 / 130 / 955 ) »
In irgendeinem deiner vorherigen Postings habe ich gesehen, dass du CONVERSION_EXIT_ALPHA_INPUT verwendest, um die Materialnummer in die interne Form zu bringen. Das ist aber falsch - du musst CONVERSION_EXIT_MATN1_INPUT verwenden. Vielleicht reicht das ja schon um den Dump/Fehlermeldung zu vermeiden.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Klassen und Merkmale herauslesen

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
Wird bereits verwendet.

Code: Alles auswählen.

    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
      EXPORTING
        input              = pa_matnr
     IMPORTING
       OUTPUT             = wa_matnr
     EXCEPTIONS
       LENGTH_ERROR       = 1
       OTHERS             = 2
  .
  IF sy-subrc <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


*Data: lv_objkey like makt-matnr.
lv_matnr = wa_matnr.
Genau dieser löst mir die Fehlermeldung aus. Aber trotzdem Danke

Re: Klassen und Merkmale herauslesen

Beitrag von black_adept (Top Expert / 4131 / 130 / 955 ) »
*sigh*
Liebe/lieber/liebes commolus.

Dies ist das erste Mal, dass du uns verrätst WO denn deine Fehlermeldung herkommt (bisher war immer von dem Merkmalsauslesebaustein die Rede ). Lernt man denn heutzutage nicht mehr, dass man den Kontext in dem ein Fehler auftritt mit postet?
Ich habe eine Vermutung warum der Fehler auftritt. Aber ich werde erst dann antworten, wenn du es schaffst deine Fehlermeldung (inkl. verwendeter Übergabeparameter und deren Definition und Belegung beim Aufruf ) hier vollständig/sinnvoll zu posten, denn wer weiß schon , was du noch alles nicht mitgeteilt hast und was meine Antwort dann lächerlich macht.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Klassen und Merkmale herauslesen

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
*&---------------------------------------------------------------------*
*& 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,
wa_maktx TYPE makt-maktx.

DATA wa_matnr TYPE mara-matnr.
data lv_matnr type c length 18.

CLEAR lt_allocvaluesnum.
CLEAR lt_allocvalueschar.
CLEAR lt_allocvaluescurr.
CLEAR wa_maktx.

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, "Drahtdurchmesser 1 isoliert mm
z_trda_0020 TYPE p DECIMALS 2, "Drahtdurchmesser 2 isoliert mm
z_trda_0045 TYPE p DECIMALS 2, "Nutquerschnitt mm#
z_trda_0050 TYPE p DECIMALS 2, "gesamte Leiterlänge 1 m
z_trda_0055 TYPE p DECIMALS 2, "gesamte Leiterlänge 2 m
z_trda_0070 TYPE p DECIMALS 2, "Eisenlänge in mm
z_trda_0075 TYPE p DECIMALS 2, "Nutenzahl
z_trda_0080 TYPE p DECIMALS 2, "Windung 1 x+y
z_trda_0090 TYPE p DECIMALS 2, "Drähte pro Leiter 1
z_trda_0095 TYPE p DECIMALS 2, "Drähte pro Leiter 2
z_trda_0110 TYPE p DECIMALS 2, "Kaltwiderstand 1 OHM
z_trda_0115 TYPE p DECIMALS 2, "Kaltwiderstand 2 OHM
z_trda_0120 TYPE p DECIMALS 2, "Masse Draht 1 in kg
z_trda_0125 TYPE p DECIMALS 2, "Masse Draht 2 in kg
z_trda_0130 TYPE p DECIMALS 2, "Masse Draht 3 in kg
z_trda_0135 TYPE p DECIMALS 2, "Masse Draht 4 in kg
z_trda_0140 TYPE p DECIMALS 2, "Eisenmasse in mm
z_trda_0150 TYPE p DECIMALS 2, "Nutkeil X in mm
z_trda_0155 TYPE p DECIMALS 2, "Nutkeil X in mm
z_trda_0160 TYPE p DECIMALS 2, "Deckschieber Breite in mm
z_trda_0165 TYPE p DECIMALS 2, "Deckschieber Staerke in mm
z_trda_0170 TYPE p DECIMALS 2, "Nutauskleidung Breite in mm
z_trda_0175 TYPE p DECIMALS 2, "Nutauskleidung Staerke in mm
z_trda_0180 TYPE p DECIMALS 2, "Zwischenschieber Breite in mm
z_trda_0185 TYPE p DECIMALS 2, "Zwischenschieber Staerke in mm
z_trda_0855 TYPE p DECIMALS 2, "Dichte Harz in kgV
z_trda_0935 TYPE p DECIMALS 2, "Traenkstrom in A
END OF ts_merkmale.
DATA: ls_merkmale TYPE ts_merkmale.
*&---------------------------------------------------------------------*
*& Aufruf des FuBa
*&---------------------------------------------------------------------*
START-OF-SELECTION.
SELECT SINGLE maktx FROM makt INTO wa_maktx
WHERE matnr = pa_matnr.

CLEAR wa_matnr.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = pa_matnr
IMPORTING
OUTPUT = lv_matnr "wa_matnr
EXCEPTIONS
LENGTH_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.


*Data: lv_objkey like makt-matnr.
*lv_matnr = wa_matnr.

CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
EXPORTING
objectkey = lv_matnr
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
*&
*&---------------------------------------------------------------------*

DATA: it_min TYPE p LENGTH 5 DECIMALS 2,
it_max TYPE p LENGTH 5 DECIMALS 2,
it_strom TYPE p LENGTH 5 DECIMALS 2,
it_spann TYPE p LENGTH 5 DECIMALS 2,
it_masse 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_0110'.
ls_merkmale-z_trda_0110 = ls_allocvaluesnum-value_from.
WHEN 'Z_TRDA_0115'.
ls_merkmale-z_trda_0115 = ls_allocvaluesnum-value_from.
WHEN 'Z_TRDA_0120'.
ls_merkmale-z_trda_0120 = ls_allocvaluesnum-value_from.
WHEN 'Z_TRDA_0125'.
ls_merkmale-z_trda_0125 = ls_allocvaluesnum-value_from.
WHEN 'Z_TRDA_0130'.
ls_merkmale-z_trda_0130 = ls_allocvaluesnum-value_from.
WHEN 'Z_TRDA_0135'.
ls_merkmale-z_trda_0135 = ls_allocvaluesnum-value_from.
WHEN 'Z_TRDA_0140'.
ls_merkmale-z_trda_0140 = 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 'Z_TRDA_0935'.
ls_merkmale-z_trda_0935 = ls_allocvaluesnum-value_from.

WHEN OTHERS.
CONTINUE.
ENDCASE.
ENDLOOP.

END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Ab hier entsteht nun die Berechnung
*&
*&---------------------------------------------------------------------*
*& Die Daten liegen in lt_charact_values;
*&---------------------------------------------------------------------*
* Jetzt rechnen mit den Merkmalen aus der Struktur:
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 = ( ( 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.6' ) * ( ls_merkmale-z_trda_0010 + '0.6' ) * '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_strom = ls_merkmale-z_trda_0115 * '15'.

it_spann = ls_merkmale-z_trda_0935 * ls_merkmale-z_trda_0110 * '1.5'.

it_masse = ls_merkmale-z_trda_0140 + ls_merkmale-z_trda_0120 + ls_merkmale-z_trda_0125 +
ls_merkmale-z_trda_0130 + ls_merkmale-z_trda_0135.


*&---------------------------------------------------------------------*
*& Ab hier entsteht nun die Ausgabe
*&
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
WRITE: 10 'Materialnummer', 30 'Bezeichnung', 50 'Min.', 75 'Max.'.
ULINE.
WRITE: pa_matnr UNDER 'Materialnummer', wa_maktx UNDER 'Bezeichnung',
it_min UNDER 'Min.',
it_max UNDER 'Max.'.
WRITE: / 'Stromstärke' UNDER 'Materialnummer', it_strom UNDER 'Min.','A' .
WRITE: / 'Spannung' UNDER 'Materialnummer', it_spann UNDER 'Min.','V'.
WRITE: / 'Gesamtgewicht' UNDER 'Materialnummer', it_masse UNDER 'Min.','kg'.
CLEAR: ls_merkmale.
Hier ist nun das momentane Codeing.

Beim Ausführen kommt es zu dieser Fehlermeldung:
1.JPG

Wenn ich es nun durch den Debugger schicke, kommt es im ersten Fuba zum Fehler:
3.JPG

Meiner Meinung nach liegt es daran dass im Customizing das Feld auf 10 Zeichen gesetzt worden ist. Diese Einstellung soll aber NICHT geändert werden.
2.JPG

So nun glaub ich habe ich nichts mehr weg gelassen.

Re: Klassen und Merkmale herauslesen

Beitrag von ewx (Top Expert / 4884 / 317 / 644 ) »
black_adept hat geschrieben:In irgendeinem deiner vorherigen Postings habe ich gesehen, dass du CONVERSION_EXIT_ALPHA_INPUT verwendest, um die Materialnummer in die interne Form zu bringen. Das ist aber falsch - du musst CONVERSION_EXIT_MATN1_INPUT verwenden. Vielleicht reicht das ja schon um den Dump/Fehlermeldung zu vermeiden.
Das ist auch falsch.
Die Materialnummer liegt bereits im internen Format vor!
Und im internen Format ist sie natürlich länger als 10 Stellen, da sie führende Nullen hat.
Ich habe aber inzwischen auch keine Lust mehr alles doppelt zu schreiben.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
commolus


Re: Klassen und Merkmale herauslesen

Beitrag von a-dead-trousers (Top Expert / 4445 / 226 / 1196 ) »
@commolus: Wenn du schon im Debugger bist, dann debugge doch einfach die Verarbeitung des Bausteins CONVERSION_EXIT_MATN1_INPUT dann wirst du sicher zu der Stelle kommen wo die Exception LENGTH_ERROR ausgelöst wird. Dort siehst du auch, welche Länge deine Variablen haben müssen, damit der Baustein richtig funktioniert.

lg ADT

P.S.: Vermutlich musst du im Debugger das Systemdebugging einschalten.
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.18
Basis: 7.50

Re: Klassen und Merkmale herauslesen

Beitrag von black_adept (Top Expert / 4131 / 130 / 955 ) »
Commolus: Du scheinst nur selektiv die Antworten zu lesen - alles was du benötigst wurde schon gesagt.

Also hier nochmal die Hinweise ( von ewx ):
1.) Der Konvertierungsexit ist völlig überflüssig, da durch die PARAMETER-Anweisung das Feld pa_matnr automatisch in der korrekten internen Form vorliegt.
2.) ewx hat dich darauf hingewiesen, dass du das Feld lv_objnr mittels

Code: Alles auswählen.

lv_objkey = pa_matnr.
füllen sollst
3.) ewx hat dich darauf hingewiesen, dass du das Feld lv_objnr korrekt definieren sollst, so wie der FuBa es erwartet. Ein kurzer Blick in die FuBa-Schnittstelle:

Code: Alles auswählen.

OBJECTKEY	LIKE	BAPI1003_KEY-OBJECT

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
commolus

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Klassen und Merkmale herauslesen

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
So Problem gelöst!!!! Herzlichen Dank an alle die produktiv mitgewirkt haben.

Code: Alles auswählen.

data: lv_objkey like BAPI1003_KEY-OBJECT.
lv_objkey = pa_matnr.

Code: Alles auswählen.

CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
    EXPORTING
      objectkey              = lv_objkey
Das ist alles was zu tun ist.

@EWX Danke! Habe nicht genau verstanden wie du das gemeint hast

Vergleichbare Themen

20
Antw.
5744
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.
1002
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
Gestern von waltersen 4 / 386
SAP GUI Installation Probleme
vor 5 Tagen von Romaniac gelöst 2 / 790
Erweiterung in ME51N/ME52N:
vor einer Woche von ABAPlerv 1 / 957

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
Gestern von waltersen 4 / 386
SAP GUI Installation Probleme
vor 5 Tagen von Romaniac gelöst 2 / 790
Erweiterung in ME51N/ME52N:
vor einer Woche von ABAPlerv 1 / 957

Unbeantwortete Forenbeiträge

Erweiterung in ME51N/ME52N:
vor einer Woche von ABAPlerv 1 / 957
Erweiterung in ME51N/ME52N:
vor einer Woche von ABAPlerv 1 / 879