sy-uname написал(а):
Никак. В Sap-е нет вычисляемых полей.
Так что есть два варианта:
1. Убрать поле из таблицы и вычислять его по мере необходимости в отчётах
2. Оставить поле и вычислять его перед сохранением или изменением записей в таблице
Читать курс по ABAP Dictionary
Спасибо. Будем искать...
Ну в принципе нашел. Так что значения в полях все-таки вычисляются.
Code:
REPORT ZMIN_MAX message-id ZARD_MESS.
TABLES ZLOC001.
DATA: QTY_I LIKE ZLOC001 OCCURS 0,
WA LIKE LINE OF QTY_I,
SUM_EST LIKE WA-ESTPRC,
SUM_QOH LIKE WA-QTYORD,
SUM_NUM LIKE WA-STOCKNO,
SUM_PRC(10) TYPE C,
TOT_NUM(5) TYPE C,
TOT_QOH(10) TYPE C.
SELECT-OPTIONS S_KEY FOR ZLOC001-DATEMOD.
START-OF-SELECTION.
SET PF-STATUS 'UPDT'.
SELECT * FROM ZLOC001 INTO CORRESPONDING FIELDS OF TABLE QTY_I
WHERE DATEMOD IN S_KEY.
*Сортировка по поставщику.
SORT QTY_I BY MANUF.
*Выводим на экран отчет проверяющий наличие материала, которое стало меньше минимума
*затем генерируем кол-во необходимого.
LOOP AT QTY_I INTO WA.
IF WA-QOH <= WA-QMIN AND WA-QMAX <> 0.
WA-QTYORD = WA-QMAX - WA-QOH.
WRITE: / sy-vline, WA-MANUF,
29 WA-QTYORD COLOR 4,
43 WA-UOM,
50 WA-STOCKNO,
60 WA-ESTPRC,
77 WA-QOH,
95 WA-QMIN,
107 WA-QMAX,
119 WA-LOC,
142 sy-vline.
WRITE: / sy-vline, WA-FULLDESC UNDER 'PREF. SUPPLIER NAME' color 7, 142 sy-vline.
WRITE: / sy-vline, 20 'WH11946' COLOR 5, 142 sy-vline.
ULINE.
ENDIF.
MODIFY TABLE QTY_I FROM WA.
*Выводим в конце отчета сумму строк, сумму кол-ва на заказ, сумму стоимости по всему кол-ву необходимого.
SUM_PRC = WA-ESTPRC * WA-QTYORD.
ADD SUM_PRC TO SUM_EST.
TOT_NUM = 1.
ADD TOT_NUM TO SUM_NUM.
ADD WA-QTYORD TO SUM_QOH.
*------------------------------------------------------------------------------------
AT LAST.
WRITE: /, /, 20 'TOTAL NUMBER OF STOCK ITEMS ON THIS REPORT:', SUM_NUM,
/,
/, 20 'TOTAL UNDERAGE QUANTITY ON THIS REPORT:', 105 SUM_QOH,
/,
/, 20 'TOTAL U.S.$ VALUE OF UNDERAGE QUANTITY:', 100 '$', SUM_EST.
ULINE.
WRITE: /, /, /, 50 'APPROVED BY:', '____________________________',
100 'DATE:', '____________________'.
ENDAT.
ENDLOOP.
*Апдейт по нажатию кнопки "Update Stock On Hand".
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'UPDT'.
LOOP AT QTY_I INTO WA.
IF WA-QOH <= WA-QMIN AND WA-QMAX <> 0.
WA-QTYORD = WA-QMAX - WA-QOH.
UPDATE ZLOC001 FROM WA.
ENDIF.
ENDLOOP.
IF SY-SUBRC = 0.
MESSAGE S008.
ENDIF.
ENDCASE.
COMMIT WORK.
TOP-OF-PAGE.
WRITE: / sy-vline, 'DATE:', SY-DATUM, 130 'PAGE:', SY-PAGNO, 142 sy-vline,
/ sy-vline, 142 sy-vline,
/ sy-vline, 142 sy-vline,
/ sy-vline, 'TIME:', SY-UZEIT, 50 'WAREHOUS UNDERAGE STOCK REPORT FOR ALL LOCATIONS', 142 sy-vline.
ULINE.
"FORMAT COLOR COL_HEADING.
WRITE: sy-vline, 'PREF. SUPPLIER NAME', 27 sy-vline, 29 'QTY. NEEDED' COLOR 4, 41 sy-vline, 43 'UOM',
sy-vline, 48 'STOCK NBR.', sy-vline, 60 'EST. PRICE', 75 sy-vline, 77 'QOH+QOO', 93
sy-vline, 95 'MIN', 105 sy-vline, 107 'MAX', 117 sy-vline, 119 'LOC', 123 sy-vline, 125 'VENDOR', 142 sy-vline.
ULINE.
"FORMAT COLOR COL_TOTAL.
WRITE: / sy-vline, 'DESCRIPTION' color 7, 142 sy-vline.
WRITE: / sy-vline, 20 'LAST PO' COLOR 5, 142 sy-vline.
uline.
ULINE.
END-OF-PAGE.