点击(此处)折叠或打开
- REPORT ztest.
- *----------------------------------------------------------------------*
- * CLASS cl_get_material_name DEFINITION
- *----------------------------------------------------------------------*
- *
- *----------------------------------------------------------------------*
- CLASS cl_get_material_name DEFINITION.
- PUBLIC SECTION.
- CLASS-METHODS get IMPORTING cf TYPE char1 OPTIONAL "删除内表重复行
- CHANGING it_itab TYPE ANY TABLE.
- ENDCLASS. "cl_get_material_name DEFINITION
- *----------------------------------------------------------------------*
- * CLASS cl_get_material_name IMPLEMENTATION
- *----------------------------------------------------------------------*
- *
- *----------------------------------------------------------------------*
- CLASS cl_get_material_name IMPLEMENTATION.
- METHOD get.
- DATA:BEGIN OF ls_makt,
- matnr TYPE makt-matnr,
- maktx TYPE makt-maktx,
- END OF ls_makt,
- lt_makt LIKE TABLE OF ls_makt.
- DATA:lv_cond TYPE string.
- FIELD-SYMBOLS:<ls_itab> TYPE any,
- <lv_matnr> TYPE any,
- <lv_maktx> TYPE any.
- DATA:lo_itab TYPE REF TO data..
- FIELD-SYMBOLS:<lt_itab> TYPE ANY TABLE.
- CHECK it_itab IS NOT INITIAL.
- IF cf EQ 'X'."删除重复行
- CREATE DATA lo_itab LIKE it_itab.
- ASSIGN lo_itab->* TO .
- = it_itab.
- SORT BY ('MATNR').
- DELETE ADJACENT DUPLICATES FROM COMPARING ('MATNR').
- lv_cond = 'matnr EQ -matnr'.
- SELECT matnr maktx INTO TABLE lt_makt
- FROM makt
- FOR ALL ENTRIES IN
- WHERE (lv_cond).
- ELSE.
- lv_cond = 'matnr EQ it_itab-matnr'.
- SELECT matnr maktx INTO TABLE lt_makt
- FROM makt
- FOR ALL ENTRIES IN it_itab
- WHERE (lv_cond).
- ENDIF.
- SORT lt_makt BY matnr.
- LOOP AT it_itab ASSIGNING .
- ASSIGN COMPONENT 'MATNR' OF STRUCTURE TO .
- ASSIGN COMPONENT 'MAKTX' OF STRUCTURE TO .
- READ TABLE lt_makt INTO ls_makt
- WITH KEY matnr = BINARY SEARCH.
- IF sy-subrc EQ 0.
- = ls_makt-maktx.
- ENDIF.
- ENDLOOP.
- ENDMETHOD. "get
- ENDCLASS.