VALUE_NEUTRAL!!ewx hat geschrieben:Nach Feld "INSTANCE" kommt das Feld VALUE_NEUTRAL...
Versteh ich im Moment nicht was gemeint ist. Habe den FuBa nach einträgen INSTANCE und VALUE_NEUTRAL durchsucht aber nichts gefunden!ewx hat geschrieben:VALUE_NEUTRAL!!ewx hat geschrieben:Nach Feld "INSTANCE" kommt das Feld VALUE_NEUTRAL...
ewx hat geschrieben:Das ist so zu verstehen, dass du dir die Rückgabetabelle noch mal genauer anschauen sollst!
Halt mal an dieser Stelle im Debugger an:commolus hat geschrieben:Wie soll ich die Hilfe verstehen?
Code: Alles auswählen.
CASE ls_charact_values-charact.
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.
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.