Текущее время: Сб, июл 19 2025, 01:28

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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