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.
Hier ist nun das momentane Codeing.*&---------------------------------------------------------------------*
*& 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.
Das ist auch falsch.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.
Code: Alles auswählen.
lv_objkey = pa_matnr.
Code: Alles auswählen.
OBJECTKEY LIKE BAPI1003_KEY-OBJECT
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
commolus
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