Текущее время: Ср, июн 18 2025, 07:13

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Реальное значение FPLT-FKSAF
СообщениеДобавлено: Чт, авг 12 2010, 15:36 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, окт 24 2007, 18:23
Сообщения: 46
Откуда: Красногорск
Поле FKSAF в таблице FPLT содержит неактуальное значение, т.к. FKSAF вычисляется динамически. Уже было 3 задачи связанных с этой проблемой, когда нужно было получить реальное значение FKSAF. Путем прочесывания гугла заметил, что не я один сталкивался с этой задачей. Поэтому выложу решение проблемы (тестировалось поверхностно, но вроде работает корректно).
{for international search systems: ME22 FPLT FKSAF real dynamic value calculate to detemine exact billing status}

На входе ключ EKPO, на выходе таблица типа FPLT с рассчитанным FKSAF:
{Import: key of EKPO, export: FPLT table with calculated FKSAF }
Code:
FUNCTION z_fplt_mget_fksaf_ekpo .
*"----------------------------------------------------------------------
*"*"Lokale interface:
*"  IMPORTING
*"     REFERENCE(IC_EBELN) TYPE  EBELN
*"     REFERENCE(IN_EBELP) TYPE  EBELP
*"  EXPORTING
*"     REFERENCE(ETB_FPLT) TYPE  Z_FPLT_TB
*"  EXCEPTIONS
*"      NOT_FOUND
*"----------------------------------------------------------------------

  DATA:
    ltb_fplt_o               TYPE TABLE OF fpltvb,
    ltb_fpla_o               TYPE TABLE OF fplavb,
    ltb_fplt_n               TYPE TABLE OF fpltvb,
    ltb_fpla_n               TYPE TABLE OF fplavb,
    ltb_fplts                TYPE TABLE OF fplts,
    ltb_bet                  TYPE TABLE OF ekbe,
    ltb_bets                 TYPE TABLE OF ekbes.

  DATA:
    ls_ekko                  TYPE ekko,
    ls_ekpo                  TYPE ekpo,
    ls_commrp                TYPE commrp,
    ls_fpltvb                TYPE fpltvb,
    ls_fplt                  TYPE fplt.

  REFRESH etb_fplt.

  SELECT SINGLE *
    FROM ekko
    INTO ls_ekko
    WHERE ebeln = ic_ebeln.

  CASE sy-subrc.
    WHEN 4.
      RAISE not_found.
  ENDCASE.

  SELECT SINGLE *
    FROM ekpo
    INTO ls_ekpo
    WHERE ebeln = ic_ebeln
      AND ebelp = in_ebelp.

  CASE sy-subrc.
    WHEN 4.
      RAISE not_found.
  ENDCASE.

  SELECT *
    FROM fpla
    INTO CORRESPONDING FIELDS OF TABLE ltb_fpla_n
    WHERE fplnr = ls_ekpo-fplnr.

  CASE sy-subrc.
    WHEN 4.
      RAISE not_found.
  ENDCASE.

  SELECT *
    FROM fplt
    INTO CORRESPONDING FIELDS OF TABLE ltb_fplt_n
    WHERE fplnr = ls_ekpo-fplnr.

  CASE sy-subrc.
    WHEN 4.
      RAISE not_found.
  ENDCASE.

  MOVE-CORRESPONDING ls_ekko TO ls_commrp.                  "#EC ENHOK
  MOVE-CORRESPONDING ls_ekpo TO ls_commrp.                  "#EC ENHOK
  ls_commrp-hwaer = ls_ekko-waers.

  CALL FUNCTION 'ME_READ_HISTORY'
    EXPORTING
      ebeln  = ic_ebeln
      ebelp  = in_ebelp
      webre  = ls_ekpo-webre
    TABLES
      xekbe  = ltb_bet
      xekbes = ltb_bets.

  PERFORM re_verteilung IN PROGRAM saplmlrp
    TABLES ltb_fplts
           ltb_bets
           ltb_bet
    USING  ls_commrp.

  PERFORM az_verteilung IN PROGRAM saplmlrp
    TABLES ltb_fplts
           ltb_bet
    USING  ls_commrp
           ls_ekko-bukrs.

  CALL FUNCTION 'BILLING_SCHEDULE_STATUS'
    EXPORTING
      i_fplnr  = ls_ekpo-fplnr
    TABLES
      fpla_old = ltb_fpla_o
      fpla_new = ltb_fpla_n
      fplt_old = ltb_fplt_o
      fplt_new = ltb_fplt_n
      i_fplts  = ltb_fplts.

  LOOP AT ltb_fplt_n INTO ls_fpltvb.
    CLEAR ls_fplt.
    MOVE-CORRESPONDING ls_fpltvb TO ls_fplt.
    APPEND ls_fplt TO etb_fplt.
  ENDLOOP.

ENDFUNCTION.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реальное значение FPLT-FKSAF
СообщениеДобавлено: Чт, фев 28 2019, 10:38 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Пт, янв 26 2007, 09:33
Сообщения: 21
Спасибо огромное за пост. Очень помогло.
:D


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB