14 февраля 2018

Изменить размер шрифта в поле в PDF-формуляре

Изменение размера шрифта в зависимости от длины поля, пример кода (FormCalc, client):
var ln = Len($.rawValue)
if (ln > 150) then
$.font.size = "7 pt"
$.para.lineHeight  = "7pt"
endif

13 февраля 2018

Отключить расширенный поиск в SAP GUI


В настройках SAP Logon в меню "Интерактивный дизайн" -> "Визуализация 2" в блоке "Расширенный поиск" выбрать необходимое значение.

09 февраля 2018

Средство поиска для файла, диалог открытия файла

Для открытия диалога выбора файла используем метод cl_gui_frontend_services=>file_open_dialog.

*&---------------------------------------------------------------------*
*&      Form  F4_FILENAME
*&---------------------------------------------------------------------*
*       File name search help
*----------------------------------------------------------------------*
FORM f4_filename  CHANGING value(cv_filename).

  DATA: lt_filename         TYPE filetable,
        ls_filename         LIKE LINE OF lt_filename,
        lv_def_filename     TYPE string,
        lv_file_filter      TYPE string,
        lv_rc               TYPE i.

  CLEAR cv_filename.

  CLEAR lv_def_filename.

  lv_file_filter = 'Excel-файлы (*.XLS;*.XLSX)|*.XLS;*.XLSX|'.

  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
*      default_extension       = lv_def_extension " 'DBF'
      default_filename        = lv_def_filename
      file_filter             = lv_file_filter
    CHANGING
      file_table              = lt_filename
      rc                      = lv_rc
    EXCEPTIONS
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      not_supported_by_gui    = 4
      OTHERS                  = 5.

  IF sy-subrc NE 0.

  ELSEIF lt_filename IS NOT INITIAL.
    READ TABLE lt_filename INTO ls_filename INDEX 1.
    cv_filename = ls_filename-filename.
  ENDIF.

ENDFORM.                    " F4_FILENAME

08 февраля 2018

Транзакция для ракурса ведения

Имеем ракурс ведения ZVTEST01.
Идём в SE93, вводим код транзакции, нажимаем "Создать", вводим Краткий текст, выбираем тип "Транзакция с параметрами". Далее вводим транзакцию SM30, ставим галку "Пропустить первый экран", указываем параметры:
VIEWNAME = ZVTEST01
UPDATE = X

02 февраля 2018

Средство поиска со значениями из внутренней таблицы

Используем функциональный модуль F4IF_INT_TABLE_VALUE_REQUEST.
  DATA: lt_tab1           TYPE TABLE OF ztab1,
        lt_return_tab     TYPE TABLE OF ddshretval,
        ls_return_tab     LIKE LINE OF lt_return_tab.

  SELECT *
    FROM ztab1
    INTO TABLE lt_tab1.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
*     ddic_structure         = ' '
      retfield               = 'DOCTYPE' " for example
*     pvalkey                = ' '
*     dynpprog               = ' '
*     dynpnr                 = ' '
*     dynprofield            = ' '
*     stepl                  = 0
*     window_title           =
*     value                  = ' '
      value_org              = 'S'
*     multiple_choice        = ' '
*     display                = ' '
*     callback_program       = ' '
*     callback_form          = ' '
*     callback_method        =
*     mark_tab               =
*   IMPORTING
*     user_reset             =
    TABLES
      value_tab              = lt_tab1
*     field_tab              =
      return_tab             = lt_return_tab
*     dynpfld_mapping        =
    EXCEPTIONS
      parameter_error        = 1
      no_values_found        = 2
      OTHERS                 = 3.

  IF sy-subrc EQ 0.

    READ TABLE lt_return_tab INTO ls_return_tab INDEX 1.

    IF sy-subrc EQ 0.

      " ls_return_tab-fieldval содержит выбранное значение

    ENDIF.

  ENDIF.

01 февраля 2018

Чтение значений домена

Для чтения значений домена используем функциональный модуль BKK_DOMAIN_TEXTS_READ.

  DATA: lt_domain_text TYPE bkkdc_t_domain_text.

  CALL FUNCTION 'BKK_DOMAIN_TEXTS_READ'
    EXPORTING
      i_langu              = sy-langu
      i_domname            = 'ZDOMNAME'
    IMPORTING
      et_domain_text       = lt_domain_text.

  " Внутренняя таблица lt_domain_text содержит значения домена