воскресенье, 17 августа 2014 г.

Round numbers with ROUND FM

Стандартная фунация round() требует подачи на вход значения P типа. Для того, чтобы выполнить округление переменной-числа типа P, можно воспользоваться ФМ ROUND. К этому ФМ есть документация с примером использования.

Замечания по тестированию ФМ. Его не получается толком протестировать из режима тестирования транзакции SE37, т.к. транзакция передаёт значение типа C, а внутри ФМ ROUND выполняется проверка типа переданного параметра, и он должен быть одним из F, P, I. Тест всегда завершается с исключением. Решением является написание тестовой программы.
 

вторник, 29 апреля 2014 г.

Testing ABAP Objects knowledge

Deleting Leading Zeros

The example of code:

REPORT ztest_delete_zeros NO STANDARD PAGE HEADING.

PARAMETERS: str TYPE char10.

START-OF-SELECTION.
  DATA: str2 TYPE char20.

  " Variant 1.
  str2 = str.
  SHIFT str2 LEFT DELETING LEADING '0'.
  WRITE: / 'Before deleting:', str.
  WRITE: / 'After deleting:', str2.

  " Variant 2.
  str2 = str.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
      input  = str2
    IMPORTING
      output = str2.

  WRITE: / 'Before deleting:', str.
  WRITE: / 'After deleting:', str2.

  " Difference between the two variants:
  " variant 1: '00000' --> '';
  " variant 2: '00000' --> '0'.

вторник, 22 апреля 2014 г.

How to determine Unicode system

Пример кода для определения типа системы по признаку Unicode (код взят из стандарта):
* Unicode information
if cl_abap_char_utilities=>charsize = 1.
  unicode_sys = 'nein'(003).
else.
  unicode_sys = 'ja'(004).
endif.

вторник, 18 марта 2014 г.

Convert DEC to CHAR, negative sign

Полезная ссылка на описание стандартного средства, которое позволяет переносить знак "-" текстового представления числа в начало числа и делать выравнивание по левому краю. При выгрузке в файл формата MS Excel помогает.
http://abaplovers.blogspot.ru/2008/06/sap-abap-negative-sign-before-number.html

понедельник, 17 марта 2014 г.

Получение min max значений для стандартных типов ABAP

Чтобы получить минимальное и/или максимальное значения стандартного типа ABAP и при этом не создавать своих собственных констант, можно воспользоваться следующим кодом (на примере целочисленного типа):
DATA: limit   TYPE REF TO i,
      int_min TYPE i.

limit ?= cl_abap_exceptional_values=>get_min_value( int_min ).
int_min = limit->*.


суббота, 8 февраля 2014 г.

Close Modal Dialog Box with Close Button

При создании диалоговых окон появилась проблема с закрытием окна с помощью кнопки "с крестиком" в верхнем правом углу экрана:
По этому поводу нашёл несколько статей:
http://freesapabap.blogspot.ru/2013/08/modal-dialog-box-pop-up-screen-in.html
http://scn.sap.com/thread/1385168
Но пояснений по поводу работы с указанной выше кнопкой "с крестиком" в них нет. Привожу здесь свои соображения по этому поводу.
Для GUI status диалогового окна в группе F-клавиш имеется подгруппа "Зарезервированные функциональные клавиши", там есть элемент F12 (Отменить). 
Вот этот элемент связан с кнопкой "с крестиком". Как только задать функциональный код для клавиши F12, при нажатии кнопку F12 или нажатии левой кнопки мыши по кнопке "с крестиком" в системной переменной sy-ucomm появляется функциональный код.
Т.о. эта кнопка является стандартной, задать функциональный код для которой мы можем косвенно через функциональную клавишу.