Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => SE38 - ABAP Редактор => Тема начата: Паганель от Апрель 21, 2011, 08:28:35 pm

Название: Поток документов сбыта (выбрать СФ и ее сумму)
Отправлено: Паганель от Апрель 21, 2011, 08:28:35 pm
Нет ни у кого примерчика (туговато что то получается что то выбрать), + поставка ...

Получается ситуация такая: есть заказ, по нему поставка, по поставке СФ, в большинстве случаев ошибочная, сторнирована, снова СФ уже по заказу, снова сторно, потом нормальная СФ но не проведенная ... ну в общем вариантов много, уже запарился, для каждого случившегося вылавливать и переделывать код...

Одним словом, ни у кого нету готовенького алгоритма, или бапишки (если работает быстренько)...

Мой пример кода, могу выложить, когда подключусь к системе...
Название: Re: Поток документов сбыта (выбрать СФ и ее сумму)
Отправлено: Uukrul от Апрель 21, 2011, 09:52:41 pm
Ну и для кого создан раздел SE37? Не я понимаю если бы там было 100 и одна страница, но там их всего ТРИ... ага и на второй странице: http://sapforum.biz/index.php/topic,203.0.html
Название: Re: Поток документов сбыта (выбрать СФ и ее сумму)
Отправлено: Паганель от Апрель 22, 2011, 11:29:27 pm
You are not allowed to view links. Register or Login
Ну и для кого создан раздел SE37? Не я понимаю если бы там было 100 и одна страница, но там их всего ТРИ... ага и на второй странице: http://sapforum.biz/index.php/topic,203.0.html
О спасибо, поиск не работает, что-то, не находит... может у админов больше прав.... :)
Название: Re: Поток документов сбыта (выбрать СФ и ее сумму)
Отправлено: Uukrul от Апрель 23, 2011, 11:05:11 am
You are not allowed to view links. Register or Login
О спасибо, поиск не работает, что-то, не находит... может у админов больше прав.... :)
Да нет просто страницы три, а поиск тут действительно плохо работает, может во второй версии форума исправили уже. Скоро обещают релиз.
Название: Re: Поток документов сбыта (выбрать СФ и ее сумму)
Отправлено: Паганель от Апрель 24, 2011, 12:58:08 pm
Небольшой примерчик, того, что мне надо было (обратите внимание, в моем случае в заказе только одна поизциия):
Код: You are not allowed to view links. Register or Login
     DATA: vbelv TYPE vbfa-vbelv,
            vbeln TYPE vbfa-vbeln, " СФ
            posnn TYPE vbfa-posnn, " поз.
            posnv TYPE vbfa-posnv.

      DATA: l_vbeln type vbak-vbeln,
      bill_num TYPE vbfa-vbeln, " СФ
      rfwrt type vbfa-rfwrt.

      l_vbeln  = '28450'. " Для теста
 
     " В моем случае, в заказе только 1 позиция
      SELECT SINGLE posnr INTO posnv
        FROM vbap
        WHERE vbeln = l_vbeln.

      SELECT SINGLE vbeln posnn INTO (vbeln,  posnn)
       FROM vbfa
       WHERE vbelv = l_vbeln AND
             posnv = posnv         AND
             vbtyp_n = 'M'         AND
             vbeln IN (
               SELECT vbeln FROM vbrk
               WHERE vbeln = vbfa~vbeln AND
                     rfbsk = 'C' AND sfakn = space AND fksto = space
             ).

      IF sy-subrc EQ 0.
         bill_num  = vbeln.
        SELECT SINGLE kzwi1 FROM vbrp
          INTO rfwrt
          WHERE vbeln = vbeln AND
                posnr = posnn.

      ENDIF.
Название: Re: Поток документов сбыта (выбрать СФ и ее сумму)
Отправлено: Dmitriy от Апрель 24, 2011, 03:49:59 pm
Процедуру нужно разгрузить.
1) Выбираем ссылку на позицию фактуры (VBFA~VBTYP_N = 'M') из потока VBFA по номеру заказа клиента VBAK-VBELN, который является входным параметром процедуры, как я понял. Если число позиций > 1, то SELECT SINGLE меняем на SELECT INTO TABLE.
2) По номеру фактуры/позиции выбираем данные из VBRK/VBRP, проверяя VBRK~FKSTO <> 'X'. А условие VBRK~SFAKN <> space имеет смысл лишь для сторнирующих фактур (VBFA~VBTYP_N = 'N'), там как раз стоит номер прямой фактуры, у которой SFAKN уже пустое, зато FKSNO = 'X', это обычное SAP-овское дело. А поскольку тип N ты не выбираешь, то и лишняя обработка не нужна.
Если процедура будет использоваться для обработки >= 1000 сбытовых заказов в каком-либо онлайн-отчёте (бывает в сбыте :D), то лучше внимательно прочесть вот этот документ (http://sapforum.biz/index.php/topic,174.msg713.html#msg713). ;)
Ясно, что серия из SELECT SINGLE вкупе с совершенно лишним и даже вредным в данном случае подзапросом существенно замедлит процесс получения конечного результата при больших объёмах данных.
Название: Re: Поток документов сбыта (выбрать СФ и ее сумму)
Отправлено: Dmitriy от Апрель 24, 2011, 04:08:37 pm
Если вдруг понадобится дебиторка FI, то найти документы можно в таблице BKPF по ключу из константы и номера сбытовой фактуры:
Код: You are not allowed to view links. Register or Login
BKPF~AWTYP = 'VBRK' - константа
BKPF~AWKEY = VBRK-VBELN - номер сбытовой с-ф
Название: Re: Поток документов сбыта (выбрать СФ и ее сумму)
Отправлено: Паганель от Апрель 25, 2011, 03:39:14 pm
You are not allowed to view links. Register or Login
Процедуру нужно разгрузить.
1) Выбираем ссылку на позицию фактуры (VBFA~VBTYP_N = 'M') из потока VBFA по номеру заказа клиента VBAK-VBELN, который является входным параметром процедуры, как я понял. Если число позиций > 1, то SELECT SINGLE меняем на SELECT INTO TABLE.
2) По номеру фактуры/позиции выбираем данные из VBRK/VBRP, проверяя VBRK~FKSTO <> 'X'. А условие VBRK~SFAKN <> space имеет смысл лишь для сторнирующих фактур (VBFA~VBTYP_N = 'N'), там как раз стоит номер прямой фактуры, у которой SFAKN уже пустое, зато FKSNO = 'X', это обычное SAP-овское дело. А поскольку тип N ты не выбираешь, то и лишняя обработка не нужна.
Если процедура будет использоваться для обработки >= 1000 сбытовых заказов в каком-либо онлайн-отчёте (бывает в сбыте :D), то лучше внимательно прочесть вот этот документ (http://sapforum.biz/index.php/topic,174.msg713.html#msg713). ;)
Ясно, что серия из SELECT SINGLE вкупе с совершенно лишним и даже вредным в данном случае подзапросом существенно замедлит процесс получения конечного результата при больших объёмах данных.
Спасибо за критику, жаль что ты раньше не написал ....
Название: Re: Поток документов сбыта (выбрать СФ и ее сумму)
Отправлено: Dmitriy от Апрель 25, 2011, 03:43:37 pm
You are not allowed to view links. Register or Login
Спасибо за критику, жаль что ты раньше не написал ....
Это не критика, это рекомендации. Подправишь код, если что, там не так его много...