SAP ABAP popup окно с полями для ввода значений

Для того сделать popup окно с полями для ввода значений не обязательно рисовать для этого целый экран.
Есть замечательный функциональный модуль POPUP_GET_VALUES, позволяющий решить ту же задачу буквально за 5 минут.
Одним из параметров функционального модуля является внутренняя таблица, основанная на структуре, в которую помещаются
названия пар типа таблица-поле для ввода, плюс значение по умолчанию, если необходимо а так же признак обязательности поля.
После того как пользователь ввёл данные и закрыл окно, производится считывание введенных значений.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
*&---------------------------------------------------------------------*
*&  Include           ZXCOFU21 cr:zhmailik_vadim@belsap.com
*&---------------------------------------------------------------------*
data: sval type sval,
      retcode,
      ls_zhm_brak type zhm_brak,
      it_zhm_brak type table of zhm_brak,
      t_fields type table of sval.
if sy-tcode = 'CO15' and is_caufvd-iasmg > 0 and is_caufvd-aufnr is not initial."Вводим номер и дату акта о браке
  select single * from zhm_brak into ls_zhm_brak where nact = ls_zhm_brak-nact and data = ls_zhm_brak-data and aufnr = ls_zhm_brak-aufnr.
  if sy-subrc <> 0.
    sval-tabname = 'ZHM_BRAK'.
    sval-fieldname = 'NACT'.
    sval-fieldtext = 'Номер акта'.
    sval-field_obl = 'X'.
    sval-value = space.
    append sval to t_fields.
    sval-tabname = 'ZHM_BRAK'.
    sval-fieldname = 'DATA'.
    sval-fieldtext = 'Дата'.
    sval-field_obl = 'X'.
    sval-value = sy-datum.
    append sval to t_fields. " Вызываем функциональный модуль "
    do.
      call function 'POPUP_GET_VALUES'
        exporting
          popup_title     = 'Введен брак введите, пожалуйста, номер акта и дату'
        importing
          returncode      = retcode
        tables
          fields          = t_fields
        exceptions
          error_in_fields = 1
          others          = 2.
      if retcode = 'A' or sy-subrc <> 0.
        leave program.
      else. " Если PUPUP окно закрыто по кнопке ОК - считываем введенные пользователем значения. " read
        clear: sval, ls_zhm_brak.
        read table t_fields with key fieldname = 'NACT' into sval.
        ls_zhm_brak-nact = sval-value.
        read table t_fields with key fieldname = 'DATA' into sval.
        ls_zhm_brak-data = sval-value.
        ls_zhm_brak-aufnr = is_caufvd-aufnr.
        ls_zhm_brak-data_create = sy-datum.
        ls_zhm_brak-user_create = sy-uname.
        ls_zhm_brak-time_create = sy-uzeit.
        select single * from zhm_brak into ls_zhm_brak where nact = ls_zhm_brak-nact and data = ls_zhm_brak-data.
        if sy-subrc <> 0.
          insert zhm_brak from ls_zhm_brak.
          exit.
        else.
          message 'Такой номер существует, повторите, пожалуйста, ввод' type 'I'.
        endif.
      endif.
    enddo.
  endif.
endif.

Добавить комментарий