Code: Alles auswählen.
CASE ls_allocvaluesnum-charact.
WHEN 'z_trda_0010'.
ls_merkmale-z_trda_0010 = ls_allocvaluesnum-value_from.
WHEN 'z_trda_0020'.
ENDCASE.
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,
wa_maktx TYPE makt-maktx .
DATA wa_matnr TYPE makt-matnr.
CLEAR lt_allocvaluesnum.
CLEAR lt_allocvalueschar.
CLEAR lt_allocvaluescurr.
CLEAR wa_maktx.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = pa_matnr
IMPORTING
output = wa_matnr.
**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.
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_0110 TYPE p DECIMALS 2,
z_trda_0115 TYPE p DECIMALS 2,
z_trda_0120 TYPE p DECIMALS 2,
z_trda_0125 TYPE p DECIMALS 2,
z_trda_0130 TYPE p DECIMALS 2,
z_trda_0135 TYPE p DECIMALS 2,
z_trda_0140 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,
z_trda_0935 TYPE p DECIMALS 2,
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.
CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
EXPORTING
objectkey = '000000000000506236'"'wa_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.
WAS geht nicht?commolus hat geschrieben:das geht aber leider nicht.
Code: Alles auswählen.
...
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_objkey = pa_matnr.
CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
EXPORTING
objectkey = 'lv_objkey'"'wa_matnr''pa_matnr''000000000000506236'
objecttable = 'MARA'
classnum = 'Z_TRDA'
classtype = '001'
* KEYDATE = SY-DATUM
* UNVALUATED_CHARS = ' '
* LANGUAGE = SY-LANGU
* IMPORTING
* STATUS =
* STANDARDCLASS =
TABLES
...
Wie soll ich das erkennen können?commolus hat geschrieben:Der 2. Funktionsbaustein zieht aber damit keine Werte mehr. Siehe Ergebnis.
*seufz* Kein Wunder, dass du keinen Dump bekommen hast.commolus hat geschrieben:Hast du das so gemeint?
Code: Alles auswählen.
objectkey = lv_objkey
Hab ich nun gemacht
Die liegt übrigens im internen Format vor!
Was du machst mit dem Conversion-Exit ist doppelt gemoppelt!
lv_objkey = pa_matnr. reicht.
Nein...?commolus hat geschrieben:Versteh deinen seufzer nicht.
commolus hat geschrieben:objectkey = 'lv_objkey'"'wa_matnr''pa_matnr''000000000000506236'
Siehe:commolus hat geschrieben:Ohne dem Hochkomma kommt es zum Dump!!!
Mit Betonung auf: "...die genau so definiert ist, wie es der Fuba erwartet"ewx hat geschrieben:Dann nimm eine Variable, die genau so definiert ist, wie es der Fuba erwartet und weise die Materialnummer zu.