如何从搜索帮助退出向用户返回值

时间:2017-09-26 08:58:17

标签: sap abap

我有一个搜索帮助,其中有许多字段要显示给用户以便应用值。我想从用户那里获得3个字段<div class="pretty-radio"> <input type="radio" class="radio" name="my-radio"> <span class="radio-look"></span> Radio text </div> <div class="pretty-radio"> <input type="radio" class="radio" name="my-radio"> <span class="radio-look"></span> Radio text 2 </div>APOFASISKOPOS

在FM出口的KATDANL中,我希望在变量中获取这些值,然后进行一些选择并找到另一个字段CALLCONTROL-STEP = SELECT。 我试图传回搜索帮助字段APOFASSISAP的选择字段,但APOFASI字段似乎是空白。 代码是:

APOFASISAP

此代码不会将值替换/添加到相应的字段。 有人可以为此提供帮助吗?

PS。让我添加另一个我在互联网的帮助下编写的代码。它位于DISPLAY的步骤中。

  TYPES: BEGIN OF ty_apofasisap_tr,
          apofasisap_tr TYPE zglk_sap_afopasi,
         END OF ty_apofasisap_tr.

  DATA: it_apofasisap_tr TYPE TABLE OF ty_apofasisap_tr,
        wa_apofasisap_tr LIKE LINE OF it_apofasisap_tr.

  DATA: lv_apofasi TYPE zglk_kyanr_ap,
        lv_skopos  TYPE zskopos,
        lv_katdanl TYPE zsl_cat_dan,
        lv_apofasisap_arx TYPE zglk_sap_afopasi.        
    lv_apofasi = wa_shlp_selopt-low.
    ls_result-apofasi = ''.
    IF lv_apofasi <> ''.
      wa_shlp_selopt-low = ''.
      MODIFY shlp-selopt FROM wa_shlp_selopt INDEX sy-tabix.
    ENDIF.

    READ TABLE shlp-selopt INTO wa_shlp_selopt WITH KEY shlpfield = 'SKOPOS'.

    lv_skopos = wa_shlp_selopt-low.

    READ TABLE shlp-selopt INTO wa_shlp_selopt WITH KEY shlpfield = 'KATDANL'.

    lv_katdanl = wa_shlp_selopt-low.

    SELECT SINGLE apofasisap INTO lv_apofasisap_arx
      FROM zsl_glk_apof
      WHERE apofasi = lv_apofasi.

    SELECT * FROM zsl_glk_apof_tr
      WHERE apofasisap_trp = lv_apofasisap_arx.

      wa_apofasisap_tr-apofasisap_tr = zsl_glk_apof_tr-apofasisap_tr.
      APPEND wa_apofasisap_tr TO it_apofasisap_tr.

    ENDSELECT.
    wa_shlp_selopt-shlpname  = 'ZAPOF_TROP'.
    wa_shlp_selopt-shlpfield = 'APOFASISAP'.
    wa_shlp_selopt-sign      = 'I'.
    wa_shlp_selopt-option    = 'EQ'.
    wa_shlp_selopt-low       = wa_apofasisap_tr-apofasisap_tr.
    APPEND wa_shlp_selopt TO shlp-selopt.

它说这个选择没有价值。表lt_result包含11条记录。

再次感谢。

2 个答案:

答案 0 :(得分:0)

我同意前言,因为代码是一团糟,没有任何东西可以解决。

首先,在SHELP FM退出中使用 DISP 事件,而不是 SELECT

其次,你填写了错误的表格(或者没有告诉我们正确填写上面的代码段)。为了将值传递给用户,您应该修改RECORD_TAB表。

您的代码应如下所示(从zsl_glk_apofzsl_glk_apof_tr表中加入选择):

CHECK callcontrol-step = 'DISP'.
DATA: ls_selopt TYPE ddshselopt.  "loc str for shlp-selopt
DATA: BEGIN OF ls_record.
      INCLUDE STRUCTURE seahlpres.
DATA: END OF ls_record.
DATA: lv_glk_apof_tr TYPE zsl_glk_apof_tr-apofasisap_tr.

LOOP AT shlp-selopt INTO ls_selopt.

* finding SKOPOS and KATDANL values
  CASE ls_selopt-shlpfield.
   WHEN 'SKOPOS'.
    lv_skopos = ls_selopt-low.
   WHEN 'KATDANL'.
    lv_katdanl = ls_selopt-low.
   WHEN OTHERS.
  ENDCASE.

  * doing smth

  * finding some stuff from Z-tables
  SELECT SINGLE tr~apofasisap_tr
  FROM zsl_glk_apof AS ap
  JOIN zsl_glk_apof_tr AS tr
   ON ap~apofasisap = tr~apofasisap_trp
  INTO lv_glk_apof_tr
   WHERE ap~apofasi = lv_apofasi.
ENDLOOP.

* modify record_tab with the found value lv_glk_apof_tr
LOOP AT record_tab INTO ls_record.
  ls_record-string+25(5) = lv_glk_apof_tr.  "field shift should be based on your values
ENDLOOP.

答案 1 :(得分:0)

您好,感谢您的宝贵帮助。 最后我做了如下:

  if callcontrol-step = 'SELECT'.
get parameter id 'ZAP' field p_apofasi.
get parameter id 'ZSK' field p_skopos.
get parameter id 'ZKATDANL' field p_katdanl.

select single apofasisap into lv_apofasisap_arx
  from zsl_glk_apof
  where apofasi = p_apofasi and
        katdanl = p_katdanl and
        skopos  = p_skopos.

select * into corresponding fields of table it_apofasisap_tr
  from zsl_glk_apof_tr
  where apofasisap_trp = lv_apofasisap_arx.

* Display the results to the user
types: begin of ls_result,
        apofasi like zsl_glk_apof-apofasi,
        apofasidate like zsl_glk_apof-apofasidate,
        apofasisap like zsl_glk_apof-apofasisap,
        apofasi_trp_x like zsl_glk_apof-apofasi_trp_x,
        apofasi_tr_x like zsl_glk_apof-apofasi_tr_x,
        katdanl like zsl_glk_apof-katdanl,
        skopos like zsl_glk_apof-skopos,
        type_desc like zsl_glk_apof-type_desc,
  end of ls_result.

data: lt_result type standard table of ls_result.

clear: lt_result, record_tab, record_tab[].

* Fill all the fields of the Search-Help with the data according to the
*selections of the user.
select apofasi apofasidate apofasisap
       apofasi_tr_x apofasi_trp_x
       katdanl skopos type_desc
    into corresponding fields of table lt_result
  from zsl_glk_apof
  for all entries in it_apofasisap_tr
  where apofasisap = it_apofasisap_tr-apofasisap_tr and
        apofasi_tr_x = 'X'. "lv_apofasi_tr_x.


call function 'F4UT_RESULTS_MAP'
  tables
    shlp_tab          = shlp_tab
    record_tab        = record_tab
    source_tab        = lt_result
  changing
    shlp              = shlp
    callcontrol       = callcontrol
  exceptions
    illegal_structure = 1
    others            = 2.

if sy-subrc = 0.
  callcontrol-step = 'DISP'.
else.
  callcontrol-step = 'EXIT'.
endif.
endif.

此致 利亚