Document ABAP product division mapping reports
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
CLASS zcl_prodsparte_provider DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES: BEGIN OF ty_out,
|
||||
matnr TYPE matnr,
|
||||
maktx TYPE maktx,
|
||||
paph1 TYPE ce11000-paph1,
|
||||
paph1_text TYPE vtext,
|
||||
wwpfa TYPE ce11000-wwpfa,
|
||||
wwpfa_text TYPE bezek,
|
||||
wwpsp TYPE ce11000-wwpsp,
|
||||
wwpsp_text TYPE bezek,
|
||||
is_assigned TYPE abap_bool,
|
||||
END OF ty_out.
|
||||
TYPES tt_out TYPE STANDARD TABLE OF ty_out WITH DEFAULT KEY.
|
||||
|
||||
METHODS get_data
|
||||
IMPORTING
|
||||
iv_vkorg TYPE vkorg
|
||||
iv_vtweg TYPE vtweg OPTIONAL
|
||||
iv_spras TYPE spras DEFAULT sy-langu
|
||||
iv_fallback TYPE bezek DEFAULT 'Nicht zugeordnet'
|
||||
RETURNING
|
||||
VALUE(rt_out) TYPE tt_out.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS zcl_prodsparte_provider IMPLEMENTATION.
|
||||
METHOD get_data.
|
||||
TYPES: BEGIN OF ty_base,
|
||||
matnr TYPE mvke-matnr,
|
||||
vtweg TYPE mvke-vtweg,
|
||||
prodh TYPE mvke-prodh,
|
||||
maktx TYPE makt-maktx,
|
||||
END OF ty_base.
|
||||
|
||||
DATA lt_base TYPE STANDARD TABLE OF ty_base WITH DEFAULT KEY.
|
||||
|
||||
IF iv_vtweg IS INITIAL.
|
||||
SELECT mvke~matnr,
|
||||
mvke~vtweg,
|
||||
mvke~prodh,
|
||||
makt~maktx
|
||||
FROM mvke
|
||||
LEFT OUTER JOIN makt
|
||||
ON makt~matnr = mvke~matnr
|
||||
AND makt~spras = @iv_spras
|
||||
INTO TABLE @lt_base
|
||||
WHERE mvke~vkorg = @iv_vkorg
|
||||
AND mvke~prodh <> @space. "#EC CI_NOFIELD
|
||||
ELSE.
|
||||
SELECT mvke~matnr,
|
||||
mvke~vtweg,
|
||||
mvke~prodh,
|
||||
makt~maktx
|
||||
FROM mvke
|
||||
LEFT OUTER JOIN makt
|
||||
ON makt~matnr = mvke~matnr
|
||||
AND makt~spras = @iv_spras
|
||||
INTO TABLE @lt_base
|
||||
WHERE mvke~vkorg = @iv_vkorg
|
||||
AND mvke~vtweg = @iv_vtweg
|
||||
AND mvke~prodh <> @space. "#EC CI_NOFIELD
|
||||
ENDIF.
|
||||
|
||||
IF lt_base IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
"Falls mehrere Vertriebswege gelesen werden, gewinnt bewusst der kleinste VTWEG.
|
||||
SORT lt_base BY matnr vtweg.
|
||||
DELETE ADJACENT DUPLICATES FROM lt_base COMPARING matnr.
|
||||
|
||||
SELECT paph1, wwpfa, wwpsp
|
||||
FROM zprodsparte_map
|
||||
INTO TABLE @DATA(lt_map). "#EC CI_NOWHERE
|
||||
SORT lt_map BY paph1.
|
||||
|
||||
SELECT prodh, vtext
|
||||
FROM t179t
|
||||
INTO TABLE @DATA(lt_h)
|
||||
WHERE spras = @iv_spras. "#EC CI_NOFIELD
|
||||
SORT lt_h BY prodh.
|
||||
|
||||
SELECT wwpfa, bezek
|
||||
FROM t25a0
|
||||
INTO TABLE @DATA(lt_fam)
|
||||
WHERE spras = @iv_spras. "#EC CI_NOFIELD
|
||||
SORT lt_fam BY wwpfa.
|
||||
|
||||
SELECT wwpsp, bezek
|
||||
FROM t25a1
|
||||
INTO TABLE @DATA(lt_spa)
|
||||
WHERE spras = @iv_spras. "#EC CI_NOFIELD
|
||||
SORT lt_spa BY wwpsp.
|
||||
|
||||
LOOP AT lt_base INTO DATA(ls_base).
|
||||
DATA(ls_out) = VALUE ty_out(
|
||||
matnr = ls_base-matnr
|
||||
maktx = ls_base-maktx
|
||||
paph1 = ls_base-prodh(5)
|
||||
wwpsp = 'UNASS'
|
||||
wwpsp_text = iv_fallback
|
||||
is_assigned = abap_false ).
|
||||
|
||||
READ TABLE lt_h INTO DATA(ls_h)
|
||||
WITH KEY prodh = ls_base-prodh BINARY SEARCH.
|
||||
IF sy-subrc = 0.
|
||||
ls_out-paph1_text = ls_h-vtext.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_map INTO DATA(ls_m)
|
||||
WITH KEY paph1 = ls_out-paph1 BINARY SEARCH.
|
||||
IF sy-subrc = 0.
|
||||
ls_out-wwpfa = ls_m-wwpfa.
|
||||
ls_out-wwpsp = ls_m-wwpsp.
|
||||
ls_out-is_assigned = abap_true.
|
||||
|
||||
READ TABLE lt_fam INTO DATA(ls_f)
|
||||
WITH KEY wwpfa = ls_m-wwpfa BINARY SEARCH.
|
||||
IF sy-subrc = 0.
|
||||
ls_out-wwpfa_text = ls_f-bezek.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_spa INTO DATA(ls_s)
|
||||
WITH KEY wwpsp = ls_m-wwpsp BINARY SEARCH.
|
||||
IF sy-subrc = 0.
|
||||
ls_out-wwpsp_text = ls_s-bezek.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
APPEND ls_out TO rt_out.
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user