SAP选择屏幕搜索帮助多值输出问题完美解决

*&---------------------------------------------------------------------*
*& Report Z14143_15
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z14143_15.
DATA: lt_ddshretval TYPE STANDARD TABLE OF ddshretval,
      lv_title(20),
      lw_ddshretval LIKE LINE OF lt_ddshretval,
      lt_dynpfields TYPE TABLE OF dynpread,
      lw_dynpfields TYPE dynpread.
DATA : BEGIN OF lt_tab OCCURS 0,
         matnr TYPE mara-matnr,
         maktx TYPE makt-maktx,
         spras TYPE makt-spras,
       END OF lt_tab.
PARAMETERS p_matnr TYPE mara-matnr.
PARAMETERS p_maktx TYPE makt-maktx.
PARAMETERS p_spras TYPE makt-spras.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.
  PERFORM frm_get_kostl.


FORM frm_get_kostl.
  SELECT mara~matnr makt~maktx makt~spras
     FROM mara
      JOIN makt ON makt~matnr = mara~matnr
     INTO TABLE lt_tab UP TO 20 ROWS.
  IF lt_tab[] IS NOT INITIAL.
    SORT lt_tab BY matnr.
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
        retfield         = 'MATNR'
        dynpprog         = sy-cprog
        dynpnr           = sy-dynnr
        window_title     = lv_title
        value_org        = 'S'
        callback_program = sy-repid
        callback_form    = 'CB_FORM'
      TABLES
        value_tab        = lt_tab
        return_tab       = lt_ddshretval
      EXCEPTIONS
        parameter_error  = 1
        no_values_found  = 2
        OTHERS           = 3.
    CLEAR lt_dynpfields.
    LOOP AT lt_ddshretval INTO lw_ddshretval.
      lw_dynpfields-fieldname = lw_ddshretval-retfield.
      lw_dynpfields-fieldvalue = lw_ddshretval-fieldval.
      APPEND lw_dynpfields TO lt_dynpfields.
    ENDLOOP.
    lw_dynpfields-fieldname = 'P_MATNR'.
    MODIFY lt_dynpfields FROM lw_dynpfields INDEX 1 TRANSPORTING fieldname.

    CALL FUNCTION 'DYNP_VALUES_UPDATE'
      EXPORTING
        dyname     = sy-repid
        dynumb     = sy-dynnr
      TABLES
        dynpfields = lt_dynpfields
*       EXCEPTIONS
*       INVALID_ABAPWORKAREA       = 1
*       INVALID_DYNPROFIELD        = 2
*       INVALID_DYNPRONAME         = 3
*       INVALID_DYNPRONUMMER       = 4
*       INVALID_REQUEST            = 5
*       NO_FIELDDESCRIPTION        = 6
*       UNDEFIND_ERROR             = 7
*       OTHERS     = 8
      .
    IF sy-subrc <> 0.
*       Implement suitable error handling here
    ENDIF.
  ENDIF.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  cb_form
*&---------------------------------------------------------------------*
FORM cb_form TABLES record_tab STRUCTURE seahlpres
              CHANGING shlp TYPE shlp_descr_t
                      callcontrol LIKE ddshf4ctrl.
  DATA: interface LIKE LINE OF shlp-interface.
  READ TABLE shlp-interface INTO interface INDEX 1.
  interface-shlpfield+4(1) = '3'.
  interface-valfield = 'P_SPRAS'.
  APPEND interface TO shlp-interface.
  interface-shlpfield+4(1) = '2'.
  interface-valfield = 'P_MAKTX'.
  APPEND interface TO shlp-interface.

ENDFORM.                    "bo_callback_form

猜你喜欢

转载自blog.csdn.net/qq_16635325/article/details/80850577