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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: SAP + кассовый аппарат
СообщениеДобавлено: Ср, сен 13 2006, 21:48 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 07 2004, 13:51
Сообщения: 21
Откуда: Москва
Пол: Мужской
Добрый день!

Имеется: SAP 4.0B и контрольно-кассовая машина + драйвер к ней.
Драйвер можно использовать через любой из трех интерфейсов:
- COM
- DISP
- 1C
Требуется: настроить в R/3 выходной документ, при выводе которого на ККМ будет печататься чек.

Собственно, самое первое, что приходит на ум, написать программу на С++, которая через COM-интерфейс и будет печатать на ККМ. А саму прогу вызывать из ABAPа, передавая ей необходимые для печати параметры.
Но терзает вопрос - а нельзя ли напрямую из ABAPа воспользоваться услугами COM-интерфейса?

Спасибо за внимание.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 14 2006, 03:37 
Специалист
Специалист

Зарегистрирован:
Ср, янв 26 2005, 05:11
Сообщения: 185
Пол: Мужской
Можно. Если есть OLE оъбект.
Типа того:
CREATE OBJECT
mp 'MSComCtl2.MonthView.2'.

CALL METHOD OF h_control-obj 'AboutBox'.

GET PROPERTY OF h_control-obj 'Columns' = col.

CALL METHOD OF col 'Add' = col1
EXPORTING
#1 = 1.
Но работает все это не очень. RFC лучше


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 14 2006, 17:48 
Ассистент
Ассистент

Зарегистрирован:
Пт, окт 07 2005, 14:02
Сообщения: 32
Я, как человек, который на кассовых аппаратах съел собаку и заработал несварение желудка могу сказать следующее:

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

Дам один совет, очень полезный:

Когда будешь писать программу, перед тем, как начать формирование нового чека - проверь состояние ФР. Если состояние "Чек открыт" - закансель его.

Самая распространённая ошибка новичков - Иногда чек может открыться и не закрыться - кончилась бумага, неправильно передали сумму полученной наличности и т.п. При этом чек остается открымыт и сумма покупки остается прежней.

При этом кассовый аппарат не подает никаких тревожных сигналов и подло ждет новых запросов. Если в это время открыть новый чек - то есть начать оформлять новую продажу, он также подло приплюсует к нему все что было продано но не пробито (чек не закрылся) ранее.

Возврат через кассовый аппарат - дело муторное и не всегда приветствуется, так что вот.

Если же количество чеков за восьмичасовую смену будет превышать, скажем, 100 - похоже на кассу прилавочного магазина или магазина самообслуживания более 250 - в данном случае лучше использовать специальные автономные фронтовые программы, которые работают без сети и более устойчивы. В данном случае просто периодически происходит обмен таблицами данных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 14 2006, 21:23 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 07 2004, 13:51
Сообщения: 21
Откуда: Москва
Пол: Мужской
to all:
спасибо за помощь, постараюсь учесть ваш опыт.

to booch:
насчет задачи - все верно. Интенсивность использования - примерно 20 операций за смену на кассу. Собственно и было предложено наладить обмен данными с 1С либо через бизнес-коннектор либо простым файлом с дальнейшим пакетным вводом, но заказчик категорически намерен отойти от 1С. Ну собственно его тоже можно понять - все операции ведутся в R/3, а 1С используется только для операций по кассе, а в конце месяца все перебивается в R/3.

Еще раз спасибо, буду пытаться пробовать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 15 2006, 08:22 
Специалист
Специалист

Зарегистрирован:
Пт, июн 16 2006, 11:39
Сообщения: 178
Откуда: Москва
2 booch (Grady ?;)):
Возможно глупый вопрос, т.к. я вообще не в теме:
POS интерфейс может использоваться в этом случае?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 15 2006, 08:46 
Ассистент
Ассистент

Зарегистрирован:
Пт, окт 07 2005, 14:02
Сообщения: 32
<Yuri> написал(а):
2 booch (Grady ?;)):
Возможно глупый вопрос, т.к. я вообще не в теме:
POS интерфейс может использоваться в этом случае?


К сожалению не знаю, что такое POS интерфейс.

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

Насколько я понял, в данном случае такой интерфейс не подходит, поскольку речь идет о кассовом аппарате, который является ведомым устройством и ничего кроме побитовых команд не понимает.

Konstantin написал:
все операции ведутся в R/3, а 1С используется только для операций по кассе, а в конце месяца все перебивается в R/3


Удачи,
Ради любопытства - что за модель ККМ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 15 2006, 09:47 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
Вставлю и свои 5 копеек:)
ККМ в online-режиме соединения с основной БД - вещь крайне ненадежная и проблематичная с точки зрения бесперебойности работы и поддержки.
Честно говоря, наиболее разумный вариант - использование POS-терминалов с локальной БД. На компе терминала крутится своя софтина, которая и производит все операции с кассой. В конце рабочего периода производится выгрузка данных в основную БД и загрузка из БД. Преимущества - независимость от подключения к БД (редко, когда саповский сервак крутится в той же ЛВС, что и терминалы), бОльшая скорость работы ну и все, следующеее из этого...
Обычно локальные программы поставляются разработчиками ККМ. Для фискальных регистраторов ФЕЛИКС, ШТРИХ есть прога "Рабочее место кассира (РМК)", поставляемая АТОЛ. Включает в себя БД, интерфейс кассира, поддержку всего многообразия оборудования, а также все необходимые интерфейсы для соединения с основной БД... Документация очень разумно и подробно написана в части пользовательской работы, а также в части организации интерфейса. Присмотритесь к этому варианту, подавляющее большинство работает именно по такой схеме, не важно, выгружается это в 1С, axapt-у или сап...

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 15 2006, 09:48 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
И еще... У вас используется фискальный регистратор или обычная ККМ в режиме ФР?

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 15 2006, 21:27 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 07 2004, 13:51
Сообщения: 21
Откуда: Москва
Пол: Мужской
booch написал(а):
Ради любопытства - что за модель ККМ?

ФР BMC СПАРК-617ТК и СПАРК-700ТК, но драйвер у них единый.

zaba написал(а):
И еще... У вас используется фискальный регистратор или обычная ККМ в режиме ФР?

фискальные регистраторы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Ну как
СообщениеДобавлено: Пн, фев 26 2007, 11:49 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 01 2005, 13:23
Сообщения: 303
Откуда: Питер
Пол: Мужской
Удалось? Поделитесь опытом? Как прикрутить фискальный регистратор в итоге?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ну как
СообщениеДобавлено: Пн, мар 05 2007, 16:51 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 07 2004, 13:51
Сообщения: 21
Откуда: Москва
Пол: Мужской
Preatos написал:
Удалось? Поделитесь опытом? Как прикрутить фискальный регистратор в итоге?


Удалось. Собственно, первая мысль и оказалась самой удачной. Была написана программа на C, которая вызывалась из ABAP'а и общалась с ФР. Так же пришлось выделить отдельную инстанцию для этих рабочих мест. С момента сдачи прошло уже три месяца (и два как я уволился :wink: ), но нареканий до сих пор не поступало.

С уважением
Константин


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ну как
СообщениеДобавлено: Вт, мар 06 2007, 10:31 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 01 2005, 13:23
Сообщения: 303
Откуда: Питер
Пол: Мужской
Konstantin написал:
Preatos написал:
Удалось? Поделитесь опытом? Как прикрутить фискальный регистратор в итоге?


Удалось. Собственно, первая мысль и оказалась самой удачной. Была написана программа на C, которая вызывалась из ABAP'а и общалась с ФР. Так же пришлось выделить отдельную инстанцию для этих рабочих мест. С момента сдачи прошло уже три месяца (и два как я уволился :wink: ), но нареканий до сих пор не поступало.

С уважением
Константин


Спасибо за ответ! Мы пошли тем же путём! Уже почти дописана программа, только на дельфи :) Её и будем вызывать из абапа.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SAP + кассовый аппарат
СообщениеДобавлено: Пт, апр 13 2012, 17:33 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, авг 18 2004, 20:07
Сообщения: 189
Коллеги,

поделитесь названиями компаний у кого подобное решение работает.

Мое руководство хочет иметь 100% гарантию, что мы это сможем сделать. На словах убедить на выходит. можно в личку.


Спасибо.

Петр.

_________________
Главное это красиво уйти!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SAP + кассовый аппарат
СообщениеДобавлено: Сб, апр 14 2012, 11:30 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
Реализовывал подключение ФСК ШТРИХ-М-ФР-К. Фискальник был подключен через COM порт к рабочей станции, на которой был установлен его драйвер. Вся работа велась из ABAP. Сразу оговорюсь, что проект в промышленную эксплуатацию не выходил, так как отпала потребность...
FUNCTION Z_F_PRINT_CHECK_SHTRIH.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" REFERENCE(ES_PAYMENTS) TYPE ZSCHECK_PAYMENTS
*" EXPORTING
*" REFERENCE(IF_CHECK_NUMBER) TYPE ZECHECK_NUMBER_SHTRIH
*" TABLES
*" ET_POSITIONS STRUCTURE ZSCHECK_POSITION
*" EXCEPTIONS
*" DRIVER_NOT_FOUND
*" OPEN_CHECK_ERROR
*" READ_TAXES_ERROR
*" PRINT_STRING_ERROR
*" FEED_DOCUMENT_ERROR
*" SALE_ERROR
*" CLOSE_CHECK_ERROR
*"----------------------------------------------------------------------
DATA: lf_operator TYPE i,
lf_mode TYPE i,
lt_taxes TYPE tt_taxes,
ls_positions TYPE zscheck_position.

* 0. Создаем экземпляр объекта драйвера
CREATE OBJECT go_application 'AddIn.Drvfr'.
IF SY-subrc IS NOT INITIAL.
RAISE DRIVER_NOT_FOUND.
ENDIF.

* 1. Проверяем статус документа
CALL METHOD OF go_application 'GETECRSTATUS'.
GET PROPERTY OF go_application 'ECRMode' = lf_mode.
IF lf_mode EQ 8.
* Предыдущий чек не закрыт -> закрываем
CALL METHOD OF go_application 'CANCELCHECK'.
ENDIF.

* 2. Выставляем параметры
PERFORM set_parameters.

* 3. Читаем поля НДС
PERFORM read_taxes CHANGING lt_taxes.

* Печатаем ограничители
PERFORM print_separater.
LOOP AT et_positions INTO ls_positions.
* 4. Продаем по-позиционно
PERFORM sale USING ls_positions
lt_taxes.
ENDLOOP.
* Печатаем ограничители
PERFORM print_separater.

* 5. Закрываем чек
PERFORM close_check USING es_payments
CHANGING if_check_number.

* 6. Протяжка ленты, чтобы оторвать
PERFORM feed_docnument USING 10.

* 7. Чистим объект документа
FREE OBJECT go_application.
ENDFUNCTION.

*&---------------------------------------------------------------------*
*& Form SET_PARAMETERS
*&---------------------------------------------------------------------*
* Выставляем параметры регистратора
*----------------------------------------------------------------------*
FORM set_parameters .
SET PROPERTY OF go_application 'PASSWORD' = 30.
SET PROPERTY OF go_application 'USERECEIPTRIBBON' = 1.
SET PROPERTY OF go_application 'USEJOURNALRIBBON' = 0.
ENDFORM. " SET_PARAMETERS

*&---------------------------------------------------------------------*
*& Form READ_TAXES
*&---------------------------------------------------------------------*
* Чиатем ставки налогов
*----------------------------------------------------------------------*
* <-- PT_TAXES - таблица ставок налогов
*----------------------------------------------------------------------*
FORM read_taxes CHANGING pt_taxes TYPE tt_taxes.
DATA: lf_value TYPE i,
lf_string TYPE string,
lf_table TYPE i,
lf_row TYPE i,
lf_field TYPE i,
ls_taxes TYPE ts_taxes.

CLEAR pt_taxes[].
DO 4 TIMES.
CLEAR: lf_value,
lf_string.
lf_table = 6.
lf_row = sy-index.
lf_field = 1.
SET PROPERTY OF go_application 'TABLENUMBER' = lf_table.
SET PROPERTY OF go_application 'ROWNUMBER' = lf_row.
SET PROPERTY OF go_application 'FIELDNUMBER' = lf_field.
CALL METHOD OF go_application 'READTABLE'.
IF sy-subrc IS NOT INITIAL.
RAISE read_taxes_error.
ENDIF.
GET PROPERTY OF go_application 'VALUEOFFIELDSTRING' = lf_string.
GET PROPERTY OF go_application 'VALUEOFFIELDINTEGER' = lf_value.
CLEAR ls_taxes.
ls_taxes-value = lf_value.
ls_taxes-string = lf_string.
APPEND ls_taxes TO pt_taxes.
ENDDO.
ENDFORM. " READ_TAXES

*&---------------------------------------------------------------------*
*& Form PRINT_SEPARATER
*&---------------------------------------------------------------------*
* Печать линии-разделителя
*----------------------------------------------------------------------*
FORM print_separater .
SET PROPERTY OF go_application 'STRINGFORPRINTING' = '----------------------------------'.
CALL METHOD OF go_application 'PRINTSTRING'.
IF sy-subrc IS NOT INITIAL.
RAISE printstring_error.
ENDIF.
ENDFORM. " PRINT_SEPARATER

*&---------------------------------------------------------------------*
*& Form SALE
*&---------------------------------------------------------------------*
* Продажа
*----------------------------------------------------------------------*
* --> PS_POSITIONS - позиция продажи
* --> PT_TAXES - ставки налогов
*----------------------------------------------------------------------*
FORM sale USING ps_positions TYPE zscheck_position
pt_taxes TYPE tt_taxes.
DATA: lf_sum TYPE p DECIMALS 4,
lf_quantity TYPE f.

lf_sum = ps_positions-wrbtr.
lf_quantity = ps_positions-menge.
SET PROPERTY OF go_application 'STRINGFORPRINTING' = ps_positions-maktx.
SET PROPERTY OF go_application 'QUANTITY' = lf_quantity.
SET PROPERTY OF go_application 'PRICE' = lf_sum.
SET PROPERTY OF go_application 'DEPARTMENT' = 1.

* Выставляем ставки налогов
PERFORM set_taxes USING ps_positions-matnr
pt_taxes.
CALL METHOD OF go_application 'SALE'.
ENDFORM. " SALE

*&---------------------------------------------------------------------*
*& Form CLOSE_CHECK
*&---------------------------------------------------------------------*
* Закрытие чека
*----------------------------------------------------------------------*
* --> PS_PAYMENTS - суммы оплаты
* <--> PF_CHECK_NUMBER - номер чека
*----------------------------------------------------------------------*
FORM close_check USING ps_payments TYPE zscheck_payments
CHANGING pf_check_number TYPE zecheck_number_shtrih.
DATA: lf_sum TYPE p DECIMALS 4,
lf_operator TYPE i,
lf_docnum TYPE i.
* Выставляем суммы оплаты
lf_sum = ps_payments-cash_amount.
SET PROPERTY OF go_application 'SUMM1' = lf_sum.
lf_sum = ps_payments-credit_amount.
SET PROPERTY OF go_application 'SUMM2' = lf_sum.
lf_sum = ps_payments-card_amount.
SET PROPERTY OF go_application 'SUMM3' = lf_sum.
SET PROPERTY OF go_application 'STRINGFORPRINTING' = 'Итого:'.

* Закрываем чек
CALL METHOD OF go_application 'CLOSECHECK'.
"GET PROPERTY OF go_application 'OPERATOR' = lf_operator.
"GET PROPERTY OF go_application 'CHANGE' = lf_sum.
IF sy-subrc IS NOT INITIAL.
RAISE close_check_error.
ENDIF.

* Получаем номер документа
CALL METHOD OF go_application 'GETECRSTATUS'.
GET PROPERTY OF go_application 'OPENDOCUMENTNUMBER' = lf_docnum.

pf_check_number = lf_docnum + 1.
ENDFORM. " CLOSE_CHECK

*&---------------------------------------------------------------------*
*& Form FEED_DOCNUMENT
*&---------------------------------------------------------------------*
* Протягиваем документ на определенное кол-во строк
*----------------------------------------------------------------------*
* --> PF_COUNT - количество строк протяжки
*----------------------------------------------------------------------*
FORM feed_docnument USING pf_count TYPE i.
SET PROPERTY OF go_application 'STRINGQUANTITY' = pf_count.
CALL METHOD OF go_application 'FEEDDOCUMENT'.
IF sy-subrc IS NOT INITIAL.
RAISE feeddocument_error.
ENDIF.
ENDFORM. " FEED_DOCNUMENT


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SAP + кассовый аппарат
СообщениеДобавлено: Пн, апр 16 2012, 19:43 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, авг 18 2004, 20:07
Сообщения: 189
Он, спасибо за код. Мой программист пытается его заточить под наш фискальный регистратор, но программист иностранный и я пробую ему немножко помочь.

Простите за дурацкий вопрос я немножко тоже умел когда-то АБАП, где можно узнать какие методы доступны для создаваемого объекта go_application? Надо искать документацию для конкретного драйвера?

_________________
Главное это красиво уйти!


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

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


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

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


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

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