2010-11-12 2 views
3


В настоящее время у нас есть система SAP с двумя разными клиентами 002 и 004. Моя задача - написать программу в ABAP для создания отчета о пользовательских присвоениях. Отчет будет делать в основном то же самое на обоих клиентах. Но мне нужно выбирать на разных таблицах и на разных клиентах различное количество таблиц. В зависимости от того, какой клиент выполняет вход пользователя, он должен войти в систему.
Вопрос: Есть ли способ отличить ABAP-код между разными клиентами? Нравится:Различают в ABAP между различными клиентами SAP (Mandanten)

IF client = 002. 
*dothis. 
ELSE. 
*dothatdifferentthing. 
ENDIF. 

Заранее спасибо.

ответ

9

Текущий клиент доступен в поле sy-mandt.

Например:

IF sy-mandt = '002'. 
*dothis. 
ELSE. 
*dothatdifferentthing. 
ENDIF. 
+0

Спасибо. Иногда я просто хочу. Похоже, я искал неправильные ключевые слова. Или слишком общие. – omnibrain

+0

И 99% таблиц SAP включают в свой ключ поле mandt или client (те, которые не включают его, являются независимыми от клиента), поэтому вы можете сделать свой клиентский код зависимым (избегая дублирования кода), добавляя «client = sy-mandt», или «mandt = sy-mandt» и «CLIENT SPECIFIED» для каждого доступа к базе данных (чтение, обновление, удаление ...) См. справку sap в инструкции FROM – franblay

+1

Система автоматически применяет ограничение к SQL-запросам, поэтому по умолчанию вы только получить данные, где 'mandt = sy-mandt' – hotzen

5

Дополнительное предложение - попытаться сделать это объектно-ориентированный путь, наполняя все общий код в абстрактный суперкласс и создать два подкласса, которые несут только клиент-зависимого кода. Затем, на основе SY-MANDT, создайте экземпляр любого из подклассов. Это может помочь уменьшить дубликат кода ...