Posted: Fri May 16, 2008 12:13 pm Post subject: условия в сбытовом заказе
День добрый, коллеги.
Проблема в следующем - в печатной форме необходимо указать все скидки из заголовка сбытового заказа.
Только не говорите мне пожалуйста про KONV - дело в том, что делаю выборку из этой таблицы, там только одна запись для KPOSN = 0.
в ней сумма по документу скажем 3000, скидка 300, а смотришь в самом документе - сумма 9000, скидка 900.
Подскажите пожалуйста, как система считает полностью условия для заголовка заказа.
Какие ФМ существуют для этого случая.
Пробовал
PRICING_BUILD_XKOMV - возвращает пустые суммы
RV_KONV_SELECT - возвращает те же значения, что и простая выборка из KONV
Age: 165 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Fri May 16, 2008 2:27 pm Post subject:
Сергей Королев рекомендовал использовать FM 'PRICING', пример есть на сапфоруме, но я проверял, он тоже брал только условия из KONV, поэтому пошел другим путем:
Code:
*----------------------------------------------------------------------*
* INCLUDE ZGRUFI_TOP *
*----------------------------------------------------------------------*
TABLES:
ekko, ekpo, eket.
RANGES:
r_bukrs for t001-bukrs.
CONSTANTS: c_persent VALUE '%'.
DATA: OK_CODE TYPE SY-UCOMM,
FCODE TYPE SY-UCOMM.
DATA: begin of report_table occurs 0.
INCLUDE STRUCTURE ZERUM_PO_PRICE.
DATA: end of report_table.
DATA: begin of it_data OCCURS 0.
INCLUDE STRUCTURE ZERUM_PO_PRICE_HEADER.
DATA: knumv TYPE ekko-knumv,
pstyp TYPE ekpo-pstyp,
bsart TYPE ekko-bsart,
bstyp TYPE ekko-bstyp,
kalsm TYPE ekko-kalsm,
zterm TYPE ekko-zterm,
zbd1p TYPE ekko-zbd1p.
DATA: end of it_data.
DATA: BEGIN OF it_konv OCCURS 0,
kschl TYPE komv-kschl,
kbetr TYPE komv-kbetr,
kwert TYPE komv-kwert,
waers TYPE komv-waers,
END OF it_konv.
DATA:
protect TYPE C,
wa_data like it_data,
report_table_line like report_table,
count type sy-tabix,
it_tcode type sy-tcode occurs 0.
DATA: xls_grid type xls_params_s,
gs_fcat TYPE lvc_t_fcat with header line,
alv_param TYPE grid_params.
DATA: BEGIN OF it_T001 OCCURS 0,
BUKRS TYPE T001-BUKRS,
END OF it_T001.
RANGES: SO_BUKRS_SAVE FOR T001-BUKRS.
DATA: g_repid TYPE syst-repid.
*&---------------------------------------------------------------------*
*& Form get_data_for_report
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_data_for_report.
PERFORM MOD_SHOW_PROCESS_WITH_TEXT
USING 0 100 'Selecting data ...'(004).
* select PO data
SELECT
p~bukrs
p~werks
k~ekorg
k~lifnr
p~ebeln
p~ebelp
p~knttp
p~ematn
p~txz01
p~menge
p~meins
p~netpr
k~waers
p~peinh
p~bprme
k~knumv
p~pstyp
p~netwr
k~kalsm
k~zterm
k~bsart
k~bstyp
p~aedat
k~zbd1p
FROM ekpo AS p
INNER JOIN ekko AS k ON k~ebeln = p~ebeln
INTO CORRESPONDING FIELDS OF TABLE it_data
WHERE p~bukrs IN s_bukrs
AND k~ekorg IN s_ekorg
AND k~bsart IN s_bsart
AND k~ekgrp IN s_ekgrp
AND p~werks IN s_werks
AND k~lifnr IN s_lifnr
AND p~matnr IN s_matnr
AND p~matkl IN s_matkl.
DATA: l_eindt TYPE eket-eindt,
l_lpein TYPE eket-lpein.
DATA: l_msg(50), l_num(50).
DATA: li_lines TYPE I,
nShow TYPE I.
DESCRIBE TABLE it_data LINES li_lines.
LOOP AT it_data INTO wa_data.
nShow = SY-TABIX MOD 100.
IF nShow IS INITIAL.
WRITE SY-TABIX TO l_num LEFT-JUSTIFIED.
CONCATENATE 'Processing line:' l_num 'of'
INTO l_msg SEPARATED BY SPACE.
WRITE li_lines TO l_num LEFT-JUSTIFIED.
CONCATENATE l_msg l_num INTO l_msg SEPARATED BY SPACE.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING "percentage = 0
text = l_msg
EXCEPTIONS
others = 0.
ENDIF.
CLEAR report_table_line.
MOVE-CORRESPONDING wa_data TO report_table_line.
PERFORM get_dlv_date
USING wa_data-ebeln wa_data-ebelp
CHANGING l_eindt l_lpein.
* Store Actual price
* From FM PRICING_SUBSCREEN_SET_DATA
DATA: ls_komk TYPE komk,
ls_komp TYPE komp,
ls_t001 TYPE t001,
ls_t001w TYPE t001w,
ls_ekko TYPE ekko,
ls_ekpo TYPE ekpo.
DATA: lt_xkomv TYPE TABLE OF komv WITH HEADER LINE.
DATA: lt_tkomv TYPE TABLE OF komv WITH HEADER LINE.
DATA: lt_tkomk TYPE TABLE OF komk WITH HEADER LINE.
LOOP AT lt_xkomv WHERE NOT knumv IS INITIAL.
IF NOT lt_xkomv-kschl IS INITIAL.
PERFORM fill_condition
USING lt_xkomv-kschl
lt_xkomv-kbetr
lt_xkomv-kwert
ls_komk-waerk
CHANGING report_table_line.
ELSEIF lt_xkomv-stunr EQ '50'. "Actual price
report_table_line-ALL_kbetr = lt_xkomv-kbetr.
report_table_line-ALL_kwert = lt_xkomv-kwert.
report_table_line-ALL_waers = lt_xkomv-waers.
ENDIF.
ENDLOOP.
APPEND report_table_line TO report_table.
ENDLOOP.
FREE it_data.
SORT report_table BY bukrs ebeln ebelp.
ENDFORM. " get_data_for_report
*&---------------------------------------------------------------------*
*& Form fill_condition
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_condition USING
p_kschl LIKE komv-kschl
p_kbetr LIKE komv-kbetr
p_kwert LIKE komv-kwert
p_waers LIKE komv-waers
CHANGING
p_line LIKE report_table_line.
CASE p_kschl.
WHEN 'PB00'.
ADD p_kbetr TO p_line-PB00_kbetr.
ADD p_kwert TO p_line-PB00_kwert.
IF p_waers IS INITIAL.
p_line-PB00_waers = c_persent.
ELSE.
p_line-PB00_waers = p_waers.
ENDIF.
WHEN 'PBXX'.
ADD p_kbetr TO p_line-PBXX_kbetr.
ADD p_kwert TO p_line-PBXX_kwert.
IF p_waers IS INITIAL.
p_line-PBXX_waers = c_persent.
ELSE.
p_line-PBXX_waers = p_waers.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDFORM. "fill_condition
Age: 165 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Thu Jan 20, 2011 12:32 pm Post subject:
Расчетные значения прайсинга (не только те, которые сохранены в KONV) в биллинговом документе возвращает
BAPISDORDER_GETDETAILEDLIST в таблице order_conditions_out. _________________ Молитва - это запрос разработчику на изменение кода программы.
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Thu Jan 20, 2011 3:36 pm Post subject: Re: условия в сбытовом заказе
Loyso wrote:
Только не говорите мне пожалуйста про KONV - дело в том, что делаю выборку из этой таблицы, там только одна запись для KPOSN = 0.
в ней сумма по документу скажем 3000, скидка 300, а смотришь в самом документе - сумма 9000, скидка 900.
При просмотре заголовка в документе суммы условий рассчитываются по позициям _________________ С уважением,
Удав.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.