Как изменить BKPF-BKTXT в созданном документе

Автор sergiucz, Вересень 30, 2012, 06:19:13 ПП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

sergiucz

Добрый день господа гуру!
Появилась задача при выводе на печать Налог Наклад. В это поле BKPF-BKTXT вставлять ИДН номер накладной .
То есть , каждый лист имеет свои уникальный номер.
И он известен когда дается на печать.

Каким способом мне надо изменить это поле в таблице BKPF.

Заранее спасибо
Жизнь - это программа , найти бы debugger к ней :)

Dmitriy

Цитата: sergiucz від Вересень 30, 2012, 06:19:13 ПП
Добрый день господа гуру!
Появилась задача при выводе на печать Налог Наклад. В это поле BKPF-BKTXT вставлять ИДН номер накладной .
То есть , каждый лист имеет свои уникальный номер.
И он известен когда дается на печать.

Каким способом мне надо изменить это поле в таблице BKPF.

Заранее спасибо
Самый простой способ, это пакетный ввод на тр. FB02. Процедуру запускайте по факту успешной печати, допустим.

sergiucz

Цитата: Dmitriy від Вересень 30, 2012, 06:47:11 ПП
Самый простой способ, это пакетный ввод на тр. FB02. Процедуру запускайте по факту успешной печати, допустим.

спасибо за ответ !!
Вопрос решил . Нашел
Нашел


CALL FUNCTION 'FI_HEADER_UPDATE'
TABLES
t_bkpf =
.
Жизнь - это программа , найти бы debugger к ней :)

Dmitriy

Цитата: sergiucz від Вересень 30, 2012, 07:39:21 ПП
спасибо за ответ !!
Вопрос решил . Нашел
Нашел
CALL FUNCTION 'FI_HEADER_UPDATE'
TABLES
t_bkpf = .
Вы уверены? А что там внутри этого ФМ и вид у него (в свойствах) какой? Поле BKTXT не только в BKPF, посмотрите по ЭД.

P.S. В опциях отправки сообщения используйте тег "код", если таковой требуется, кнопка "#".

Uukrul

Переведу ответ Димы если кто не понял...
Цитата: sergiucz від Вересень 30, 2012, 07:39:21 ПП
спасибо за ответ !!
Вопрос решил . Нашел
Нашел
Ничего вы не нашли, и использовать данный ФМ категорически запрещено для тех целей которые вы собрались.
Цитата: sergiucz від Вересень 30, 2012, 07:39:21 ПП
CALL FUNCTION 'FI_HEADER_UPDATE'
TABLES
t_bkpf =
Это модуль обновления, вызываемый в контексте стандартной работы обновления данных при проводке документов, там в тексте только вот это:

FUNCTION FI_HEADER_UPDATE.
*"----------------------------------------------------------------------
*"*"Verbuchungsfunktionsbaustein:
*"
*"*"Lokale Schnittstelle:
*"       TABLES
*"              T_BKPF STRUCTURE  BKPF
*"----------------------------------------------------------------------


  UPDATE BKPF FROM TABLE T_BKPF.

  IF SY-SUBRC NE 0.
    MESSAGE A247(FQ) WITH 'BKPF'.
  ENDIF.

ENDFUNCTION.

Так что ничего вы не нашли, это прямой апдейт таблиц, которым может пользоваться только стандартный функционал системы. Я в FI не силен, но кажется там BAPI подходящей нет и придется воспользоватся предложением Дмитрия, по поводу формирования пакетного ввода.

Dmitriy

Спасибо за код ФМ, нет под рукой системы. Подозрение закралось по названию и усилилось после поиска в гугле.:)

sergiucz

#6
Добрый день .
Спасибо всем за интерес .
Я делаю так .

      SELECT * INTO  CORRESPONDING FIELDS OF TABLE lt_bkpf FROM bkpf WHERE  belnr EQ pa_belnr AND bukrs EQ pa_bukrs.
      READ TABLE lt_bkpf INDEX 1 .
      lt_bkpf-bktxt = pa_fnum.
      MODIFY lt_bkpf INDEX 1.

      CALL FUNCTION 'FI_HEADER_UPDATE'
        TABLES
          t_bkpf = lt_bkpf.

я же не меняю ничего кроме  bkpf-bktxt
Пока все работает нормально . Глюков нет

Но если говорите что лучше через пакетник то я переделаю программу .
Жизнь - это программа , найти бы debugger к ней :)

e.gorscov

Точно  такая же проблема есть  и для MKPF. Ее  можно  обновлять  бапихой?
Все пройдет, пройдет и это...

sergiucz

Цитата: Dmitriy від Жовтень 02, 2012, 01:24:21 ДП
Спасибо за код ФМ, нет под рукой системы. Подозрение закралось по названию и усилилось после поиска в гугле.:)

Да просто сидели и ждали машины на рампе пока я искал в гоогле.
Просто у нас Тока запустилась система и в тот день я узнал что надо это делать.
Жизнь - это программа , найти бы debugger к ней :)

NachDenken

Цитата: sergiucz від Жовтень 09, 2012, 11:24:21 ДП
Добрый день .
Спасибо всем за интерес .
Я делаю так .

      SELECT * INTO  CORRESPONDING FIELDS OF TABLE lt_bkpf FROM bkpf WHERE  belnr EQ pa_belnr AND bukrs EQ pa_bukrs.
      READ TABLE lt_bkpf INDEX 1 .
      lt_bkpf-bktxt = pa_fnum.
      MODIFY lt_bkpf INDEX 1.

      CALL FUNCTION 'FI_HEADER_UPDATE'
        TABLES
          t_bkpf = lt_bkpf.

я же не меняю ничего кроме  bkpf-bktxt
Пока все работает нормально . Глюков нет

Но если говорите что лучше через пакетник то я переделаю программу .
belnr EQ pa_belnr AND bukrs EQ pa_bukrs ключ нужно полный указывать
А может глянуть open FI event какой подходящий есть ?

Uukrul

Цитата: sergiucz від Жовтень 09, 2012, 11:24:21 ДП
я же не меняю ничего кроме  bkpf-bktxt
Пока все работает нормально . Глюков нет
Ну в таком случае делайте просто: UPDATE BKPF FROM TABLE T_BKPF, хотя нет точнее будет делать UPDATE bkpf SET bktxt = pa_fnum WHERE <ключ записи> и всех делов, это раз.

Теперь два - рекомендации лучших соба-саповодов. НИКОГДА И НИ ПРИ КАКИХ СЛУЧАЯХ НЕ ОБНОВЛЯЙТЕ ДАННЫЕ ТАБЛИЦ СИСТЕМЫ ПРЯМЫМИ АПДЕЙТАМИ (тот 0,0001% когда это нужно сделать, сделайте молча, тихо и никому, никогда об этом не рассказывайте!!!)

sergiucz

Всем спасибо!
Сделал через пакетник.


Uukrul Спасибо за советы :) Буду строго соблюдать :)


Жизнь - это программа , найти бы debugger к ней :)

Sed0Y

#12
Если уже и решили делать UPDATE, то создайте доп структуру в этой таблице с своим полем и обновляйте его, и там где вам нужно подтягивайте это поле....

P.S. В некоторых случаях я так делаю(только не для этой таблицы)...

Uukrul

Цитата: Sed0Y від Жовтень 11, 2012, 03:44:14 ПП
Если уже и решили делать UPDATE, то создайте доп структуру в этой таблице с своим полем и обновляйте его, и там где вам нужно подтягивайте это поле....
Ну тогда наверное лучше завести свою таблицу, смысла добавлять поле именно в BKPF не вижу, размер таблицы вырастет существенно, так как FI-документов обычно очень много. А стандартные отчеты все равно видеть это поле не будут. Так что смысла особого нет.

sergiucz

Цитата: Uukrul від Жовтень 20, 2012, 07:31:45 ПП
Ну тогда наверное лучше завести свою таблицу, смысла добавлять поле именно в BKPF не вижу, размер таблицы вырастет существенно, так как FI-документов обычно очень много. А стандартные отчеты все равно видеть это поле не будут. Так что смысла особого нет.

так была поставлена задача с начало.
Мы просто переделали книгу покупок и продаж под себя и сделали все интерфейсы и программы чтоб бралось оттуда тоже.
Жизнь - это программа , найти бы debugger к ней :)