Простой пример вывода html на экран.
03 декабря 2018
26 ноября 2018
Вызов программы с передачей динамических параметров селекционного экрана
При вызове программы через SUBMIT, селекционный экран которой имеет динамические параметры, используем дополнение WITH FREE SELECTIONS lt_texpr, где lt_texpr имеет тип rsds_texpr. В следующем примере вызываем программу для транзакции FBL1N и передаём в динамический параметр "Блокировка платежа" значение "A".
DATA:
lv_sydatum TYPE sy-datum,
lt_items TYPE it_rfposxext,
lt_trange TYPE rsds_trange,
lt_texpr TYPE rsds_texpr.
FIELD-SYMBOLS:
<lfs_trange> LIKE LINE OF lt_trange,
<lfs_frange> LIKE LINE OF <lfs_trange>-frange_t,
<lfs_selopt> LIKE LINE OF <lfs_frange>-selopt_t.
lv_sydatum = sy-datum.
INSERT INITIAL LINE INTO TABLE lt_trange ASSIGNING <lfs_trange>.
<lfs_trange>-tablename = 'BSIK'.
INSERT INITIAL LINE INTO TABLE <lfs_trange>-frange_t ASSIGNING <lfs_frange>.
<lfs_frange>-fieldname = 'ZLSPR'.
INSERT INITIAL LINE INTO TABLE <lfs_frange>-selopt_t ASSIGNING <lfs_selopt>.
<lfs_selopt>-sign = 'I'.
<lfs_selopt>-option = 'EQ'.
<lfs_selopt>-low = 'A'.
CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_EX'
EXPORTING
field_ranges = lt_trange
IMPORTING
expressions = lt_texpr.
SUBMIT rfitemap
WITH kd_bukrs IN s_bukrs " БЕ
WITH kd_lifnr IN s_lifnr " Кредитор
WITH pa_stida EQ lv_sydatum " Открытые на отчетную дату
WITH pa_vari EQ '1SAP' " Формат
WITH x_aisel EQ '' " Все позиции
WITH x_apar EQ '' " Позиции дебиторов
WITH x_clsel EQ '' " Выровненные позиции
WITH x_merk EQ '' " Памятные позиции
WITH x_norm EQ 'X' " Стандартные позиции
WITH x_opsel EQ '' " Открытые позиции
WITH x_park EQ '' " Предв. зарегистрированные
WITH x_shbv EQ '' " Операции Особой главной книги
WITH FREE SELECTIONS lt_texpr
EXPORTING LIST TO MEMORY
AND RETURN.
15 ноября 2018
Сторно FI-документа (BAPI BAPI_ACC_DOCUMENT_REV_POST)
Для сторно FI-документа используется функциональный модуль (BAPI) BAPI_ACC_DOCUMENT_REV_POST.
Создание FI-документа с проводкой на налоговые счета (BAPI BAPI_ACC_DOCUMENT_POST)
Используется функциональный модуль BAPI_ACC_DOCUMENT_POST.
14 ноября 2018
Расчет суммы налога по коду налога и базовой сумме
Используется функциональный модуль CALCULATE_TAX_FROM_NET_AMOUNT.
CALL FUNCTION 'CALCULATE_TAX_FROM_NET_AMOUNT'
EXPORTING
i_bukrs = lv_bukrs
i_mwskz = lv_mwskz
i_waers = lv_waers
i_wrbtr = lv_wrbtr
IMPORTING
e_fwste = lv_fwste
TABLES
t_mwdat = lt_mwdat
EXCEPTIONS
bukrs_not_found = 1
country_not_found = 2
mwskz_not_defined = 3
mwskz_not_valid = 4
ktosl_not_found = 5
kalsm_not_found = 6
parameter_error = 7
knumh_not_found = 8
kschl_not_found = 9
unknown_error = 10
account_not_found = 11
txjcd_not_valid = 12
OTHERS = 13.
13 ноября 2018
Сумма прописью
Используется функциональный модуль SPELL_AMOUNT.
DATA:
lv_p1(8) TYPE p VALUE '950',
ls_words TYPE spell.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
amount = lv_p1
* currency = ' '
* filler = ' '
language = 'R'
IMPORTING
in_words = ls_words
EXCEPTIONS
not_found = 1
too_large = 2
OTHERS = 3.
IF sy-subrc EQ 0.
" ls_words-word содержит сумму прописью
ENDIF.
12 ноября 2018
Создание спецификации (BOM)
Пример использования BAPI_MATERIAL_BOM_GROUP_CREATE.
26 сентября 2018
Popup окно с выбором значения в виде таблицы ALV
Есть два (а может и больше) ФМа SRM_SELECTION_POPUP_WITH_ALV и REUSE_ALV_POPUP_TO_SELECT.
DATA:
lt_tab TYPE TABLE OF rbkp_key,
lv_selected_line TYPE i,
lv_canceled TYPE srmboolean,
ls_selfield TYPE slis_selfield,
lv_exit.
SELECT *
FROM rbkp
INTO CORRESPONDING FIELDS OF TABLE lt_tab
WHERE bldat BETWEEN '20180901' AND '20181231'.
CALL FUNCTION 'SRM_SELECTION_POPUP_WITH_ALV'
EXPORTING
im_title = 'Title'
im_tabname = 'RBKP_KEY'
im_startx = 5
im_stopx = 100
im_starty = 1
im_stopy = 10
IMPORTING
ex_selected_line = lv_selected_line
ex_canceled_by_user = lv_canceled
CHANGING
lt_outtab = lt_tab.
" Or
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
i_title = 'Это заголовок'
* i_selection = 'X'
* i_allow_no_selection =
i_zebra = 'X'
* i_screen_start_column = 0
* i_screen_start_line = 0
* i_screen_end_column = 0
* i_screen_end_line = 0
* i_checkbox_fieldname =
* i_linemark_fieldname =
* i_scroll_to_sel_line = 'X'
i_tabname = '1'
i_structure_name = 'RBKP_KEY'
* it_fieldcat =
* it_excluding =
* i_callback_program =
* i_callback_user_command =
* is_private =
IMPORTING
es_selfield = ls_selfield
e_exit = lv_exit
TABLES
t_outtab = lt_tab
EXCEPTIONS
program_error = 1
OTHERS = 2.
25 сентября 2018
Добавить ZZ-поле в отчет FBL1N
1. Добавить поле в структуры RFPOS (RFPOSX) через append-структуру.
2. Запустить программу RFPOSXEXTEND, чтобы сгенерировать необходимые структуры.
3. Для заполнения поля использовать BTE 00001650 "LINE ITEM DISPLAY: Add to Data per Line" (P/S Module) или BAdI "FI_ITEMS_CH_DATA".
2. Запустить программу RFPOSXEXTEND, чтобы сгенерировать необходимые структуры.
3. Для заполнения поля использовать BTE 00001650 "LINE ITEM DISPLAY: Add to Data per Line" (P/S Module) или BAdI "FI_ITEMS_CH_DATA".
27 августа 2018
Скрыть/показать элемент в PDF-формуляре
Скрыть/показать элемент в PDF-формуляре в зависимости от условия, пример кода (initialize, FormCalc, client):
if ($record.STRUCT_NAME.FIELD_NAME == "X") then $.presence = "hidden" endif
19 мая 2018
Как получить разрешение экрана
DATA: lo_consumer TYPE REF TO cl_gui_props_consumer,
ls_metric_factors TYPE cntl_metric_factors.
lo_consumer = cl_gui_props_consumer=>create_consumer( ).
ls_metric_factors = lo_consumer->get_metric_factors( ).
WRITE: ls_metric_factors-screen-x,
ls_metric_factors-screen-y.
18 мая 2018
Как получить размер окна
DATA: lv_begin_row TYPE i,
lv_begin_col TYPE i,
lv_end_row TYPE i,
lv_end_col TYPE i.
CALL 'GET_WINDOW_DATA'
ID 'BEGROW' FIELD lv_begin_row
ID 'BEGCOL' FIELD lv_begin_col
ID 'ENDROW' FIELD lv_end_row
ID 'ENDCOL' FIELD lv_end_col.
CALL SCREEN 0900 STARTING AT 5 1 ENDING AT lv_end_col lv_end_row.
14 февраля 2018
Изменить размер шрифта в поле в PDF-формуляре
Изменение размера шрифта в зависимости от длины поля, пример кода (FormCalc, client):
var ln = Len($.rawValue) if (ln > 150) then $.font.size = "7 pt" $.para.lineHeight = "7pt" endif
13 февраля 2018
12 февраля 2018
Класс для работы с символами
Класс CL_ABAP_CHAR_UTILITIES. В частности константа:
cl_abap_char_utilities=>cr_lf
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
Идём в 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 содержит значения домена
Подписаться на:
Комментарии (Atom)
