SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

условия в сбытовом заказе



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Loyso
Участник
Участник



Joined: 19 Nov 2007
Posts: 37

PostPosted: Fri May 16, 2008 12:13 pm    Post subject: условия в сбытовом заказе Reply with quote

День добрый, коллеги.

Проблема в следующем - в печатной форме необходимо указать все скидки из заголовка сбытового заказа.

Только не говорите мне пожалуйста про KONV - дело в том, что делаю выборку из этой таблицы, там только одна запись для KPOSN = 0.
в ней сумма по документу скажем 3000, скидка 300, а смотришь в самом документе - сумма 9000, скидка 900.

Подскажите пожалуйста, как система считает полностью условия для заголовка заказа.

Какие ФМ существуют для этого случая.

Пробовал
PRICING_BUILD_XKOMV - возвращает пустые суммыSad
RV_KONV_SELECT - возвращает те же значения, что и простая выборка из KONV

Заранее спасибо всем.
Back to top
View user's profile Send private message Blog
vga
Мастер
Мастер


Age: 190
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Fri May 16, 2008 2:27 pm    Post subject: Reply with quote

Сергей Королев рекомендовал использовать 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.

    CHECK l_eindt IN s_eindt.

    CALL FUNCTION 'PERIOD_AND_DATE_CONVERT_OUTPUT'
         EXPORTING
           internal_date   = l_eindt
           internal_period = l_lpein
         IMPORTING
           external_date   = report_table_line-eeind
         EXCEPTIONS
           error_message = 01.

    CALL FUNCTION 'ME_ITEM_CATEGORY_OUTPUT'
         EXPORTING
           pstyp = wa_data-pstyp
         IMPORTING
           epstp = report_table_line-epstp.

* Select  conditions values

* 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.

    REFRESH: lt_xkomv[], lt_tkomv[].
    CLEAR: ls_komk, ls_komp, lt_xkomv, lt_tkomv.

    CALL FUNCTION 'ME_EKKO_SINGLE_READ'
       EXPORTING
            pi_ebeln         = wa_data-ebeln
            pi_refresh_buffer = 'X'
       IMPORTING
            po_ekko          = ls_ekko
       EXCEPTIONS
            no_records_found = 1
            OTHERS           = 2.

    CHECK sy-subrc IS INITIAL.

    SELECT SINGLE * FROM ekpo INTO ls_ekpo
      WHERE ebeln = wa_data-ebeln
        AND ebelp = wa_data-ebelp.

    CHECK sy-subrc IS INITIAL.

*    MOVE-CORRESPONDING wa_data TO ls_ekko.
*    MOVE-CORRESPONDING wa_data TO ls_ekpo.

    CALL FUNCTION 'K_READ_T001'
       EXPORTING
            i_bukrs   = ls_ekko-bukrs
       IMPORTING
            e_t001    = ls_t001
       EXCEPTIONS
            not_found = 1
            OTHERS    = 2.

    CHECK sy-subrc IS INITIAL.

    CALL FUNCTION 'MM_REFRESH_PARTNERS'. "memory free
    CALL FUNCTION 'ME_FILL_KOMK_PO'
         EXPORTING
              i_ekko = ls_ekko
              i_ekpo = ls_ekpo
              i_t001 = ls_t001
         IMPORTING
              e_komk = ls_komk.

    CHECK sy-subrc IS INITIAL.

    CALL FUNCTION 'T001W_SINGLE_READ'
         EXPORTING
              t001w_werks = ls_ekpo-werks
         IMPORTING
              wt001w      = ls_t001w
         EXCEPTIONS
              not_found   = 1
              OTHERS      = 2.

    CALL FUNCTION 'ME_FILL_KOMP_PO'
         EXPORTING
              i_ekpo  = ls_ekpo
              i_t001w = ls_t001w
              i_ekko  = ls_ekko
              i_komk  = ls_komk
         IMPORTING
              e_komp  = ls_komp.

    CALL FUNCTION 'PRICING_SUBSCREEN_PBO'
         EXPORTING
           comm_head_i = ls_komk
           comm_item_i = ls_komp
         IMPORTING
           comm_head_e = ls_komk
           comm_item_e = ls_komp
         TABLES
           tkomv       = lt_tkomv
           ykomv       = lt_xkomv
         EXCEPTIONS
          OTHERS     = 1.

    CALL FUNCTION 'PRICING_REFRESH'
         TABLES
           TKOMK = lt_tkomk
           TKOMV = lt_tkomv
         EXCEPTIONS
          OTHERS     = 1.

    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
Back to top
View user's profile Send private message Blog Visit poster's website
Loyso
Участник
Участник



Joined: 19 Nov 2007
Posts: 37

PostPosted: Fri May 16, 2008 4:30 pm    Post subject: Reply with quote

О! Спасибо! ПопробуваемSmile.
Back to top
View user's profile Send private message Blog
vga
Мастер
Мастер


Age: 190
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Thu Jan 20, 2011 12:32 pm    Post subject: Reply with quote

Расчетные значения прайсинга (не только те, которые сохранены в KONV) в биллинговом документе возвращает
BAPISDORDER_GETDETAILEDLIST в таблице order_conditions_out.

_________________
Молитва - это запрос разработчику на изменение кода программы.
Back to top
View user's profile Send private message Blog Visit poster's website
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Thu Jan 20, 2011 3:36 pm    Post subject: Re: условия в сбытовом заказе Reply with quote

Loyso wrote:
Только не говорите мне пожалуйста про KONV - дело в том, что делаю выборку из этой таблицы, там только одна запись для KPOSN = 0.
в ней сумма по документу скажем 3000, скидка 300, а смотришь в самом документе - сумма 9000, скидка 900.

При просмотре заголовка в документе суммы условий рассчитываются по позициям Wink

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.