Текущее время: Вс, июл 20 2025, 00:53

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


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

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


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

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