动态选择屏幕基于Z表中的记录数

时间:2015-03-31 19:21:05

标签: dynamic parameters abap

我有一个Z表,其中有一定数量的记录 现在说15条记录。使用这15条记录并以此为基础 在2个领域说组和位置我要创建15 选中动态选中复选框。如果在 未来Z表记录更新为25或30 记录 。我在选择屏幕上需要25-30个复选框 动态地改变代码.. 请帮助解决这个问题...

2 个答案:

答案 0 :(得分:1)

这是一个建议。您可以使用表格中的值轻松填充下拉菜单或更好的ALV网格,而不是从表格行生成复选框,然后用户可以选择这些值。以编程方式评估用户选择将非常简单。此外,随着桌子的进一步增长,您不必担心不同的dynpro尺寸。

答案 1 :(得分:0)

这是一个解决方案,在选择屏幕上有10个动态复选框的上限,带有动态描述和值分配。

REPORT ztest_check_boxes.

DATA: g_num_check_boxes TYPE i,
      g_num_cb_shown    TYPE i,
      g_first_time      TYPE abap_bool VALUE abap_true.

FIELD-SYMBOLS: <cb>   TYPE flag,
               <text> TYPE any.

PARAMETERS: px_01 AS CHECKBOX MODIF ID cb,
            px_02 AS CHECKBOX MODIF ID cb,
            px_03 AS CHECKBOX MODIF ID cb,
            px_04 AS CHECKBOX MODIF ID cb,
            px_05 AS CHECKBOX MODIF ID cb,
            px_06 AS CHECKBOX MODIF ID cb,
            px_07 AS CHECKBOX MODIF ID cb,
            px_08 AS CHECKBOX MODIF ID cb,
            px_09 AS CHECKBOX MODIF ID cb,
            px_10 AS CHECKBOX MODIF ID cb.

INITIALIZATION.

  " Determine the number of checkboxes to show,
  " for simplicity I just hard coded this
  g_num_check_boxes = 3.


AT SELECTION-SCREEN OUTPUT.

  g_num_cb_shown = 0.

  LOOP AT SCREEN.

    IF screen-group1 EQ 'CB'.
      " This will trigger on the check box
      " as well as their descriptions

      IF g_num_cb_shown LT g_num_check_boxes.
        " Need to display this check box
        CASE screen-group3.
          WHEN 'PAR'.
            " This is the check box
            " you can set the value here dynamically.
            " Should only be done once
            IF g_first_time EQ abap_true.
              ASSIGN (screen-name) TO <cb>.
              IF ( g_num_cb_shown MOD 2 ) EQ 0.
                <cb> = 'X'.
              ENDIF.
            ENDIF.

          WHEN 'TXT'.
            " This is the text, you could set this with
            " data from your database table
            ASSIGN (screen-name) TO <text>.
            <text> = `Checkbox ` && g_num_cb_shown.

            " TXT comes after PAR, so we should do this here
            ADD 1 TO g_num_cb_shown.

        ENDCASE.

      ELSE.
        " Need to hide this check box
        screen-active = '0'.
        MODIFY SCREEN.

      ENDIF. " Display?

    ENDIF. " Check box?

  ENDLOOP. " SCREEN

  g_first_time = abap_false.

START-OF-SELECTION.

  ...