ZSMCP (Module Pool Program: ZMD - Kiabi - Main) .
ZSMCP (Module Pool Program: ZMD - Kiabi - Main) .
PROGRAM zmd_kiabi_main.
DATA: gc_logo_container TYPE REF TO cl_gui_docking_container,
gc_picture_control TYPE REF TO cl_gui_picture.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
*Begin of change by EX_PAYALS on 17.07.2019
IF sy-tcode = 'ZSMCP'.
SET PF-STATUS 'ZSMCP_PFSTAT'.
ELSE.
*end of change by EX_PAYALS on 17.07.2019
SET PF-STATUS 'ZKIABI_PFSTAT'.
ENDIF. "Added by EX_PAYALS on 17.07.2019
SET TITLEBAR 'ZKIABI_TITLE'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module DISPLAY_IMAGE OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE display_image OUTPUT.
DATA: lv_mime_url TYPE string,
lv_return_code TYPE w3param-ret_code,
lv_content_type TYPE w3param-cont_type,
lv_content_length TYPE w3param-cont_len, " Content Length
lv_pic_size TYPE i, " Picture Size
lv_url(256) TYPE c. " URL
DATA: lo_mr_api TYPE REF TO if_mr_api.
DATA: BEGIN OF graphic_table OCCURS 0,
line(255) TYPE x,
END OF graphic_table.
DATA: graphic_size TYPE i.
DATA: graphic_url(255).
DATA: image TYPE REF TO cl_gui_picture.
DATA: l_graphic_xstr TYPE xstring,
l_graphic_conv TYPE i,
l_graphic_offs TYPE i.
* IF sy-tcode = 'ZKIABI'. "Commneted by EX_PAYAL
S on 31.07.2019
lv_content_type = 'Picture'.
* IF gs_ztm_vend_fcn-zimage IS NOT INITIAL.
IF gc_picture_control IS INITIAL.
CREATE OBJECT gc_picture_control
EXPORTING
parent = gc_logo_container.
IF sy-subrc IS INITIAL.
* No Check
ENDIF.
IF sy-tcode = 'ZKIABI'. "Ad
ded by EX_PAYALS on 31.07.2019
CALL METHOD gc_picture_control->set_position
EXPORTING
height = 900
left = 5
top = 0
width = 4000.
*Begin of change by EX_PAYALS on 31.07.2019
ELSEIF sy-tcode = 'ZSMCP'.
CALL METHOD gc_picture_control->set_position
EXPORTING
height = 2000
left = 300
top = 60
width = 4000.
ENDIF.
*End of change by EX_PAYALS on 31.07.2019
IF lv_url IS INITIAL.
* This Folder is transported to Production, Hence it is static
IF sy-tcode = 'ZKIABI'. "
Added by EX_PAYALS on 31.07.2019
lv_mime_url = 'sap/public/kiabi/KIABI.gif' .
*Begin of change by EX_PAYALS on 31.07.2019
ELSEIF sy-tcode = 'ZSMCP'.
lv_mime_url = 'sap/public/SMCP/SMCP_logo.jpg' .
ENDIF.
*End of change by EX_PAYALS on 31.07.2019
IF lo_mr_api IS INITIAL.
lo_mr_api = cl_mime_repository_api=>if_mr_api~get_api( ).
ENDIF.
CALL METHOD lo_mr_api->get
EXPORTING
i_url = lv_mime_url
IMPORTING
e_content = l_graphic_xstr
EXCEPTIONS
parameter_missing = 1
error_occured = 2
not_found = 3
permission_failure = 4
OTHERS = 5.
* current will hold the image in a xstring var
CLEAR graphic_url.
graphic_size = xstrlen( l_graphic_xstr ).
CHECK graphic_size > 0.
l_graphic_conv = graphic_size.
l_graphic_offs = 0.
WHILE l_graphic_conv > 255.
graphic_table-line = l_graphic_xstr+l_graphic_offs(255).
APPEND graphic_table.
l_graphic_offs = l_graphic_offs + 255.
l_graphic_conv = l_graphic_conv - 255.
ENDWHILE.
graphic_table-line = l_graphic_xstr+l_graphic_offs(l_graphic_conv).
APPEND graphic_table.
CALL FUNCTION 'DP_CREATE_URL'
EXPORTING
type = text-004
subtype = cndp_sap_tab_unknown
TABLES
data = graphic_table
CHANGING
url = lv_url
EXCEPTIONS
OTHERS = 1.
IF sy-subrc IS INITIAL.
* No Check
ENDIF.
ENDIF.
CALL METHOD gc_picture_control->load_picture_from_url
EXPORTING
url = lv_url.
ENDIF.
*ENDIF.
"Commented by EX_PAYALS on 31.07.2019
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
DATA : gd_view LIKE dd02v-tabname,
gt_sellist TYPE vimsellist OCCURS 1 WITH HEADER LINE.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'I_MC_MAIN'.
CALL TRANSACTION 'ZMATKLRP'.
WHEN 'I_SALE_ERP'.
CALL TRANSACTION 'ZSALERP'.
WHEN 'O_INV'.
CALL TRANSACTION 'ZSTOCKOUT'.
WHEN 'O_PPREQ'.
CALL TRANSACTION 'ZPRICEREQ'.
WHEN 'O_SRETURN'.
CALL TRANSACTION 'ZSALERET'.
WHEN 'O_SRETURNE'. "EX_SATENDRAS 20/02/2019
CALL TRANSACTION 'ZSALERET_ECOM'."EX_SATENDRAS 20/02/2019
WHEN 'O_LABEL'.
CALL TRANSACTION 'ZKIALABEL'.
WHEN 'I_ART_REP'.
CALL TRANSACTION 'ZART_REP'.
WHEN 'I_KIA_SHIP'.
CALL TRANSACTION 'ZKIASHIP'.
WHEN 'C_VEND'.
CALL TRANSACTION 'ZRETAILMAP'.
ENDCASE.
ENDMODULE.
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE display_image.
*
PROCESS AFTER INPUT.
MODULE user_command_0100.
tcode: ZART_REP Program : ZMM_RETAIL_ARTICLE_REPROCESS (executable)
*&---------------------------------------------------------------------*
*& Report ZMM_RETAIL_ARTICLE_REPROCESS
************************************************************************
* Name: Sreejith
*
* Date: 14-Dec-2017
*
* Change Request & MIL No:
*
* Transaction Code : ZART_REP
*
* Description: Create and List Article *
*
*
************************************************************************
* Change Control Information
*
************************************************************************
* CR & SpecNo | Date | Name | Description *
* | | |
*
************************************************************************
REPORT zmm_retail_article_reprocess NO STANDARD PAGE HEADING.
TABLES: t001.
TYPES: BEGIN OF ty_header,
bukrs TYPE bukrs,
fshnid TYPE zfshn,
reference TYPE zevendordref, "order reference ID char18
artcrtstatus TYPE zartstatus, "article creation status char1
filename TYPE zfilename2, "file name char60
END OF ty_header.
DATA: go_header_cont TYPE REF TO cl_gui_custom_container,
go_header_grid TYPE REF TO cl_gui_alv_grid,
go_item_cont TYPE REF TO cl_gui_custom_container,
go_item_grid TYPE REF TO cl_gui_alv_grid,
go_msg_cont TYPE REF TO cl_gui_custom_container,
go_msg_grid TYPE REF TO cl_gui_alv_grid,
gt_header TYPE STANDARD TABLE OF ty_header,
gt_header_all TYPE STANDARD TABLE OF ztm_retail_stage,
gt_item TYPE STANDARD TABLE OF ztm_retail_stage,
gt_item_fm TYPE STANDARD TABLE OF ztm_retail_stage,
gt_item_pim TYPE STANDARD TABLE OF ztm_kiabi_pim,
gs_item_pim TYPE ztm_kiabi_pim,
gs_item TYPE ztm_retail_stage,
gs_header TYPE ty_header,
gt_row_no TYPE lvc_t_roid,
gs_row_no LIKE LINE OF gt_row_no,
gs_layo TYPE lvc_s_layo,
gs_i_layo TYPE lvc_s_layo,
gt_fcat TYPE lvc_t_fcat,
gt_i_fcat TYPE lvc_t_fcat,
gs_fcat TYPE lvc_s_fcat,
gs_i_fcat TYPE lvc_s_fcat,
gv_ind TYPE sy-index,
gv_fg TYPE c,
gv_bg TYPE c.
DATA : gt_error TYPE TABLE OF ztm_error_stage.
FIELD-SYMBOLS : <ft_header> TYPE STANDARD TABLE,
<ft_item> TYPE STANDARD TABLE.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.
SELECT-OPTIONS: s_bukrs FOR t001-bukrs NO-EXTENSION NO INTERVALS OBLIGATORY,
s_date FOR sy-datum.
PARAMETERS: p_brand TYPE zprocess_type OBLIGATORY,
p_amode AS CHECKBOX. "SOC by EX_SANDEEPK for CR00004122
SELECTION-SCREEN: END OF BLOCK b1.
AT SELECTION-SCREEN.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD s_bukrs-low
ID 'ACTVT' FIELD '03' .
IF sy-subrc <> 0.
MESSAGE text-t26 TYPE 'E'.
ENDIF.
*----------------------------------------------------------------------*
* CLASS lcl_eventreceiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_eventreceiver DEFINITION.
PUBLIC SECTION.
METHODS handle_double_click FOR EVENT double_click
OF cl_gui_alv_grid IMPORTING e_row e_column.
METHODS: handle_err_disp FOR EVENT user_command
OF cl_gui_alv_grid IMPORTING e_ucomm,
handle_toolbar FOR EVENT toolbar
OF cl_gui_alv_grid IMPORTING e_object e_interactive.
ENDCLASS. "LCL_EVENTRECEIVER DEFINITION
*----------------------------------------------------------------------*
* CLASS LCL_EVENTRECEIVER IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_eventreceiver IMPLEMENTATION.
METHOD handle_double_click.
gv_ind = e_row-index.
READ TABLE gt_header INTO gs_header INDEX gv_ind.
IF sy-subrc = 0.
REFRESH:gt_item.
SELECT *
FROM ztm_retail_stage
INTO TABLE gt_item
WHERE bukrs = gs_header-bukrs
AND fshnid = gs_header-fshnid
AND reference = gs_header-reference
AND filename = gs_header-filename.
IF gt_item IS NOT INITIAL.
IF p_amode IS NOT INITIAL.
DELETE gt_item WHERE amode <> 'M'.
ENDIF.
SELECT * FROM ztm_kiabi_pim INTO TABLE gt_item_pim
FOR ALL ENTRIES IN gt_item WHERE
bukrs = gt_item-bukrs
AND fshnid = gt_item-fshnid
AND idnlf = gt_item-idnlf
AND reference = gt_item-reference
AND model = gt_item-model
AND color = gt_item-color
AND size1 = gt_item-size1.
IF go_item_grid IS BOUND AND go_item_cont IS BOUND.
* Free the objects for new selection
CALL METHOD go_item_grid->free.
CALL METHOD go_item_cont->free.
ENDIF.
CREATE OBJECT go_item_cont
EXPORTING
container_name = text-t03.
CREATE OBJECT go_item_grid
EXPORTING
i_parent = go_item_cont.
SELECT SINGLE * FROM ztm_art_rep_map INTO @DATA(ls_art_map) WHERE
bukrs IN @s_bukrs.
IF sy-subrc <> 0.
PERFORM fildcat_item.
PERFORM layout_item.
PERFORM displayitem.
ELSE.
PERFORM create_custom_item.
ENDIF.
ELSEIF go_item_cont IS NOT INITIAL.
CALL METHOD go_item_grid->refresh_table_display.
ENDIF.
ENDIF.
ENDMETHOD. "HANDLE_DOUBLE_CLICK
METHOD handle_err_disp.
DATA lref_data TYPE REF TO data.
* To handle user command
CASE e_ucomm.
WHEN 'REFR'.
IF gt_header_all[] IS NOT INITIAL.
DATA(lt_header) = gt_header_all[].
SELECT * FROM
ztm_retail_stage
INTO TABLE gt_header_all
FOR ALL ENTRIES IN lt_header
WHERE bukrs = lt_header-bukrs
AND fshnid = lt_header-fshnid
AND reference = lt_header-reference
AND crdat = lt_header-crdat.
SORT gt_header_all BY bukrs fshnid reference filename.
DELETE ADJACENT DUPLICATES FROM gt_header_all COMPARING bukrs fshnid
reference filename.
IF <ft_header> IS ASSIGNED.
REFRESH <ft_header>.
CREATE DATA lref_data LIKE LINE OF <ft_header>.
ASSIGN lref_data->* TO FIELD-SYMBOL(<fs_header>).
IF <fs_header> IS ASSIGNED.
LOOP AT gt_header_all INTO DATA(ls_header_all).
MOVE-CORRESPONDING ls_header_all TO <fs_header>.
APPEND <fs_header> TO <ft_header>.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
CALL METHOD go_header_grid->refresh_table_display.
WHEN 'ERROR'.
CALL METHOD go_header_grid->get_selected_rows
IMPORTING
et_row_no = gt_row_no.
READ TABLE gt_row_no INTO gs_row_no INDEX 1.
IF sy-subrc = 0.
READ TABLE gt_header INTO gs_header INDEX gs_row_no-row_id.
IF sy-subrc = 0.
CALL SCREEN '0300'.
ENDIF.
ENDIF.
ENDCASE.
ENDMETHOD.
METHOD handle_toolbar.
* add push button to the alv tool bar
DATA ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
ls_toolbar-text = 'Refresh'.
ls_toolbar-icon = '@42@'.
MOVE 'REFR' TO ls_toolbar-function.
MOVE 'Refresh' TO ls_toolbar-quickinfo.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ls_toolbar-text = 'Display Error'.
ls_toolbar-icon = '@0A@'.
MOVE 'ERROR' TO ls_toolbar-function.
MOVE 'Display Error' TO ls_toolbar-quickinfo.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "handle_toolbar
ENDCLASS. "LCL_EVENTRECEIVER IMPLEMENTATION
START-OF-SELECTION.
DATA: gx_object TYPE REF TO lcl_eventreceiver.
* Call Screen 100
CALL SCREEN 100.
INCLUDE zmm_retail_article_reprocesi01.
==========================================================
*----------------------------------------------------------------------*
***INCLUDE ZMM_RETAIL_ARTICLE_REPROCESI01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0200 INPUT.
DATA lv_lines TYPE i.
CASE sy-ucomm.
WHEN 'REPROCESS'.
IF gv_bg IS NOT INITIAL.
PERFORM article_processing_bg.
LEAVE TO SCREEN 0.
ELSEIF gv_fg IS NOT INITIAL.
PERFORM article_processing.
LEAVE TO SCREEN 0.
ENDIF.
WHEN OTHERS.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form ARTICLE_PROCESSING
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM article_processing .
DATA: lt_return TYPE bapiret2_tt,
ls_return TYPE bapiret2,
ls_error TYPE ztm_error_stage,
ls_header TYPE ztm_retail_stage,
lv_error TYPE char1,
lv_reference TYPE zevendordref.
DATA : lref_data TYPE REF TO data.
FIELD-SYMBOLS : <fs_header> TYPE ztm_retail_stage.
CLEAR lv_error.
IF p_amode IS NOT INITIAL.
lv_reference = |{ gs_header-reference }| && |_M|.
ELSE.
lv_reference = gs_header-reference.
ENDIF.
DELETE FROM ztm_error_stage WHERE bukrs = gs_header-bukrs
AND reference = lv_reference.
PERFORM remap_article_char CHANGING lv_error.
CHECK gt_item_fm IS NOT INITIAL
AND lv_error IS INITIAL.
* Create articles
CALL FUNCTION 'ZMM_RETAIL_ARTICLE_CREATE'
EXPORTING
i_process_type = p_brand
IMPORTING
et_return = lt_return
ev_error = lv_error
TABLES
t_art_data = gt_item_fm
EXCEPTIONS
no_data = 1
OTHERS = 2.
READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
IF sy-subrc = 0.
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
MOVE-CORRESPONDING ls_return TO ls_error.
ls_error-bukrs = gs_header-bukrs.
ls_error-reference = lv_reference.
ls_error-process = p_brand.
ls_error-msgno = ls_return-number.
APPEND ls_error TO gt_error.
ENDLOOP.
IF gt_error IS NOT INITIAL.
DELETE FROM ztm_error_stage WHERE reference = lv_reference.
COMMIT WORK.
MODIFY ztm_error_stage FROM TABLE gt_error.
COMMIT WORK.
ENDIF.
READ TABLE gt_header_all ASSIGNING <fs_header> WITH KEY bukrs = gs_header-
bukrs
reference = gs_header-
reference
filename = gs_header-
filename.
IF <fs_header> IS ASSIGNED.
<fs_header>-artcrtstatus = 'E'.
ENDIF.
ELSE.
READ TABLE gt_header_all ASSIGNING <fs_header> WITH KEY bukrs = gs_header-
bukrs
reference = gs_header-
reference
filename = gs_header-
filename.
IF <fs_header> IS ASSIGNED.
<fs_header>-artcrtstatus = 'S'.
ENDIF.
DELETE FROM ztm_error_stage WHERE reference = lv_reference.
ENDIF.
MODIFY ztm_retail_stage FROM TABLE gt_item_fm.
COMMIT WORK.
IF <ft_header> IS ASSIGNED.
REFRESH <ft_header>.
CREATE DATA lref_data LIKE LINE OF <ft_header>.
ASSIGN lref_data->* TO FIELD-SYMBOL(<fs_head_new>).
IF <fs_head_new> IS ASSIGNED.
LOOP AT gt_header_all INTO ls_header .
MOVE-CORRESPONDING ls_header TO <fs_head_new>.
APPEND <fs_head_new> TO <ft_header>.
ENDLOOP.
ENDIF.
ELSE.
READ TABLE gt_header ASSIGNING FIELD-SYMBOL(<fs_head>) WITH KEY bukrs = gs
_header-bukrs
reference = gs_header
-reference
filename = gs_header-
filename.
IF sy-subrc = 0.
READ TABLE gt_header_all INTO ls_header WITH KEY bukrs = gs_header-bukrs
reference = gs_header
-reference
filename = gs_header-
filename.
IF sy-subrc = 0.
<fs_head>-artcrtstatus = ls_header-artcrtstatus.
ENDIF.
ENDIF.
ENDIF.
IF <ft_item> IS ASSIGNED.
REFRESH <ft_item>.
CLEAR lref_data.
CREATE DATA lref_data LIKE LINE OF <ft_item>.
ASSIGN lref_data->* TO FIELD-SYMBOL(<fs_item>).
IF <fs_item> IS ASSIGNED.
LOOP AT gt_item INTO DATA(ls_item) WHERE bukrs = gs_header-bukrs
AND reference = gs_header-reference
AND filename = gs_header-filename.
READ TABLE gt_item_fm INTO DATA(ls_item_new) WITH KEY bukrs = gs_heade
r-bukrs
reference = gs_header-reference
filename = gs_header-filename
itemno = ls_item-itemno.
IF sy-subrc = 0.
MOVE-CORRESPONDING ls_item_new TO <fs_item>.
ELSE.
MOVE-CORRESPONDING ls_item TO <fs_item>.
ENDIF.
APPEND <fs_item> TO <ft_item>.
ENDLOOP.
ENDIF.
ENDIF.
CALL METHOD go_header_grid->refresh_table_display.
CALL METHOD go_item_grid->refresh_table_display.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZPFS'.
SET TITLEBAR 'ZTIT'.
IF s_bukrs IS NOT INITIAL.
IF go_header_grid IS NOT BOUND.
CREATE OBJECT go_header_cont
EXPORTING
container_name = text-t02.
CREATE OBJECT go_header_grid
EXPORTING
i_parent = go_header_cont.
PERFORM get_data.
IF gt_header[] IS NOT INITIAL.
PERFORM layout_header.
SELECT SINGLE * FROM ztm_art_rep_map INTO @DATA(ls_art_map) WHERE
bukrs IN @s_bukrs.
IF sy-subrc <> 0.
PERFORM fildcat_header.
PERFORM displayheader.
ELSE.
PERFORM create_custom_header.
ENDIF.
PERFORM double_click.
PERFORM get_change_data.
ENDIF.
ENDIF.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
CALL METHOD go_header_grid->free.
CALL METHOD go_header_cont->free.
LEAVE TO SCREEN 0.
WHEN 'REPROCESS'.
PERFORM reprocessing.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data.
DATA: lt_header TYPE TABLE OF ztm_retail_stage,
ls_header TYPE ztm_retail_stage,
gs_header_all TYPE ztm_retail_stage.
REFRESH: gt_header,lt_header,gt_header_all.
IF p_amode IS NOT INITIAL.
SELECT * "bukrs fshnid reference artcrtstatus filename
FROM ztm_retail_stage
INTO TABLE gt_header_all
WHERE bukrs IN s_bukrs
AND fshnid = p_brand(3)
AND crdat IN s_date
AND amode EQ 'M'.
ELSE.
SELECT * "bukrs fshnid reference artcrtstatus filename
FROM ztm_retail_stage
INTO TABLE gt_header_all
WHERE bukrs IN s_bukrs
AND fshnid = p_brand(3)
AND crdat IN s_date.
ENDIF.
lt_header[] = gt_header_all[].
SORT gt_header_all BY bukrs fshnid reference filename.
DELETE ADJACENT DUPLICATES FROM gt_header_all COMPARING bukrs fshnid referen
ce filename.
LOOP AT gt_header_all ASSIGNING FIELD-SYMBOL(<fs_header>).
READ TABLE lt_header INTO ls_header WITH KEY bukrs = <fs_header>-bukrs
fshnid = <fs_header>-fshnid
reference = <fs_header>-
reference
filename = <fs_header>-
filename
artcrtstatus = 'E'.
IF sy-subrc = 0.
<fs_header>-artcrtstatus = 'E'.
ELSE.
READ TABLE lt_header INTO ls_header WITH KEY bukrs = <fs_header>-bukrs
fshnid = <fs_header>-
fshnid
reference = <fs_header>-
reference
filename = <fs_header>-
filename
artcrtstatus = 'N'.
IF sy-subrc EQ 0.
<fs_header>-artcrtstatus = 'N'.
ELSE.
<fs_header>-artcrtstatus = 'S'.
ENDIF.
ENDIF.
MOVE-CORRESPONDING <fs_header> TO gs_header.
APPEND gs_header TO gt_header.
ENDLOOP.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form FILDCAT_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fildcat_item.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = text-t04
CHANGING
ct_fieldcat = gt_i_fcat[].
ENDFORM. " FILDCAT_HEADER
*&---------------------------------------------------------------------*
*& Form LAYOUT_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM layout_header.
CLEAR:gs_layo.
gs_layo-sel_mode = 'D'.
gs_layo-zebra = 'X'.
gs_layo-col_opt = 'X'.
gs_layo-grid_title = text-t05.
ENDFORM. " LAYOUT_HEADER
*&---------------------------------------------------------------------*
*& Form DISPLAYHEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM displayheader.
CALL METHOD go_header_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layo
CHANGING
it_outtab = gt_header[]
it_fieldcatalog = gt_fcat[].
ENDFORM. " DISPLAYHEADER
*&---------------------------------------------------------------------*
*& Form DOUBLE_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM double_click.
CREATE OBJECT gx_object.
SET HANDLER gx_object->handle_double_click FOR go_header_grid.
SET HANDLER gx_object->handle_toolbar FOR go_header_grid.
SET HANDLER gx_object->handle_err_disp FOR go_header_grid.
CALL METHOD go_header_grid->set_toolbar_interactive.
ENDFORM. " DOUBLE_CLICK
*&---------------------------------------------------------------------*
*& Form GET_CHANGE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_change_data.
*
* SET HANDLER gx_object->handle_data_changed FOR go_header_grid.
* CALL METHOD go_header_grid->register_edit_event
* EXPORTING
* i_event_id = cl_gui_alv_grid=>mc_evt_enter.
ENDFORM. " GET_CHANGE_DATA
*&---------------------------------------------------------------------*
*& Form REPROCESSING
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM reprocessing.
CALL METHOD go_header_grid->get_selected_rows
IMPORTING
et_row_no = gt_row_no.
REFRESH gt_item_fm.
IF gt_row_no[] IS INITIAL.
MESSAGE e398(00) WITH text-m02. "'Please select one line from Header tab
le to Re-Process'.
ELSE.
IF gt_item[] IS NOT INITIAL.
CALL SCREEN '0200' STARTING AT '20' '10'.
* PERFORM reprocess_mod_data.
ELSE.
MESSAGE e398(00) WITH text-m01." 'There is no Item data to reprocess,p
lease double click on the Header line'.
ENDIF.
ENDIF.
ENDFORM. " REPROCESSING
*&---------------------------------------------------------------------*
*& Form DISPLAYITEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM displayitem.
CALL METHOD go_item_grid->set_table_for_first_display
EXPORTING
is_layout = gs_i_layo
CHANGING
it_outtab = gt_item[]
it_fieldcatalog = gt_i_fcat[].
ENDFORM. " DISPLAYITEM
*&---------------------------------------------------------------------*
*& Form LAYOUT_ITEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM layout_item.
CLEAR: gs_i_layo.
gs_i_layo-zebra = 'X'.
gs_i_layo-col_opt = 'X'.
gs_i_layo-grid_title = text-t06.
ENDFORM. " LAYOUT_ITEM
*&---------------------------------------------------------------------*
*& Form FILDCAT_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fildcat_header.
gs_fcat-fieldname = 'BUKRS'.
gs_fcat-tabname = 'GT_HEADER'.
gs_fcat-outputlen = 10.
gs_fcat-key = 'X'.
gs_fcat-reptext = text-t07." 'Company Code'.
APPEND gs_fcat TO gt_fcat.
gs_fcat-fieldname = 'FSHNID'.
gs_fcat-tabname = 'GT_HEADER'.
gs_fcat-outputlen = 10.
gs_fcat-key = 'X'.
gs_fcat-reptext = text-t08. "'Brand ID'.
APPEND gs_fcat TO gt_fcat.
gs_fcat-fieldname = 'ARTCRTSTATUS'.
gs_fcat-tabname = 'GT_HEADER'.
gs_fcat-outputlen = 3.
gs_fcat-reptext = text-t09. "'Article Creation Status'.
APPEND gs_fcat TO gt_fcat.
gs_fcat-fieldname = 'FILENAME'.
gs_fcat-tabname = 'GT_HEADER'.
gs_fcat-outputlen = 60.
gs_fcat-reptext = text-t10. "'Filename from PI'.
APPEND gs_fcat TO gt_fcat.
ENDFORM. " FILDCAT_HEADER
*&---------------------------------------------------------------------*
*& Module STATUS_0300 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0300 OUTPUT.
TYPES : BEGIN OF ty_error,
bukrs TYPE bukrs,
fshnid TYPE char3,
type TYPE bapi_mtype,
message TYPE bapi_msg,
END OF ty_error.
DATA: ls_m_layo TYPE lvc_s_layo,
lt_disperror TYPE TABLE OF ty_error,
ls_disperror TYPE ty_error,
lv_reference TYPE zevendordref.
SET PF-STATUS space.
IF go_msg_cont IS INITIAL.
CREATE OBJECT go_msg_cont
EXPORTING
container_name = 'ERROR_CONT'.
CREATE OBJECT go_msg_grid
EXPORTING
i_parent = go_msg_cont.
ENDIF.
REFRESH lt_disperror.
CALL METHOD go_header_grid->get_selected_rows
IMPORTING
et_row_no = gt_row_no.
READ TABLE gt_row_no INTO gs_row_no INDEX 1.
IF sy-subrc = 0.
CLEAR gs_header.
READ TABLE gt_header INTO gs_header INDEX gs_row_no-row_id.
IF sy-subrc = 0 .
IF p_amode IS NOT INITIAL.
lv_reference = |{ gs_header-reference }| && |_M|.
ELSE.
lv_reference = gs_header-reference.
ENDIF.
SELECT * FROM ztm_error_stage INTO TABLE gt_error
WHERE bukrs = gs_header-bukrs
AND reference = lv_reference "gs_header-reference
AND process = p_brand.
IF sy-subrc = 0.
LOOP AT gt_error INTO DATA(ls_error).
MOVE-CORRESPONDING ls_error TO ls_disperror.
ls_disperror-fshnid = gs_header-fshnid.
ls_disperror-type = 'E'.
IF ls_error-id = '00'.
ls_error-message_v2 = ls_error-message.
ENDIF.
CALL FUNCTION 'BAPI_MESSAGE_GETDETAIL'
EXPORTING
id = ls_error-id
number = ls_error-msgno
language = sy-langu
textformat = 'TXT'
message_v1 = ls_error-message_v1
message_v2 = ls_error-message_v2
message_v3 = ls_error-message_v3
message_v4 = ls_error-message_v4
IMPORTING
message = ls_disperror-message.
APPEND ls_disperror TO lt_disperror.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
REFRESH gt_fcat.
gs_fcat-fieldname = 'BUKRS'.
gs_fcat-tabname = 'LT_DISPERROR'.
gs_fcat-outputlen = 10.
gs_fcat-key = 'X'.
gs_fcat-reptext = text-t07." 'Company Code'.
APPEND gs_fcat TO gt_fcat.
gs_fcat-fieldname = 'FSHNID'.
gs_fcat-tabname = 'LT_DISPERROR'.
gs_fcat-outputlen = 10.
gs_fcat-key = 'X'.
gs_fcat-reptext = text-t08. "'Brand ID'.
APPEND gs_fcat TO gt_fcat.
gs_fcat-fieldname = 'TYPE'.
gs_fcat-tabname = 'LT_DISPERROR'.
gs_fcat-outputlen = 1.
gs_fcat-reptext = text-t12. "'Article Creation Status'.
APPEND gs_fcat TO gt_fcat.
gs_fcat-fieldname = 'MESSAGE'.
gs_fcat-tabname = 'LT_DISPERROR'.
gs_fcat-outputlen = 60.
gs_fcat-reptext = text-t13. "'Filename from PI'.
APPEND gs_fcat TO gt_fcat.
* Calling the method to display the O/P
CALL METHOD go_msg_grid->set_table_for_first_display
EXPORTING
is_layout = ls_m_layo
CHANGING
it_outtab = lt_disperror[]
it_fieldcatalog = gt_fcat[].
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form ARTICLE_PROCESSING_BG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM article_processing_bg .
DATA: lv_job_name LIKE tbtco-jobname,
lv_job_nr LIKE tbtco-jobcount,
lv_job_released TYPE c,
lv_immediate TYPE btcchar1,
lv_job_start_sofort TYPE c,
lv_bukrs TYPE bukrs,
lv_error TYPE c,
lv_reference TYPE zevendordref,
lv_print_parameters TYPE pri_params.
CONSTANTS : lc_prgrp TYPE zmi_prgrp VALUE 'RETAIL_ART',
lc_param TYPE zmi_param VALUE 'JOB_IMMEDIATE'.
CALL METHOD go_header_grid->get_selected_rows
IMPORTING
et_row_no = gt_row_no.
READ TABLE gt_row_no INTO gs_row_no INDEX 1.
IF sy-subrc = 0.
READ TABLE gt_header INTO gs_header INDEX gs_row_no-row_id.
ENDIF.
IF gs_header IS NOT INITIAL.
IF p_amode IS NOT INITIAL.
lv_reference = |{ gs_header-reference }| && |_M|.
ELSE.
lv_reference = gs_header-reference.
ENDIF.
DELETE FROM ztm_error_stage WHERE bukrs = gs_header-bukrs
AND reference = lv_reference.
PERFORM remap_article_char CHANGING lv_error.
IF lv_error IS INITIAL.
lv_job_name = |ARTICLE| && |{ gs_header-reference }| && |{ sy-datum }|.
SELECT SINGLE parav FROM zmi_parm INTO lv_immediate WHERE
prgrp = lc_prgrp
AND prrid = gs_header-bukrs
AND param = lc_param.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = lv_job_name
IMPORTING
jobcount = lv_job_nr
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF syst-subrc = 0.
lv_bukrs = s_bukrs-low.
*submit job with all the selection screen params...
SUBMIT zmm_retail_article_cr_bg
WITH p_bukrs = lv_bukrs
WITH p_fshnid = gs_header-fshnid
WITH p_file = gs_header-filename
WITH p_ref = gs_header-reference
WITH p_proc = p_brand
WITH p_amode = p_amode "SOC by EX_SANDEEPK
USER sy-uname " mandatory
VIA JOB lv_job_name NUMBER lv_job_nr AND RETURN.
IF sy-subrc = 0.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = lv_job_nr
jobname = lv_job_name
strtimmed = lv_immediate "'X'
IMPORTING
job_was_released = lv_job_released
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
OTHERS = 8.
IF syst-subrc <> 0.
MESSAGE text-t15 TYPE 'E'.
ELSE.
DATA(lv_message) = |{ text-t16 }| && |{ lv_job_name }|.
MESSAGE lv_message TYPE 'I'.
ENDIF.
ELSE.
MESSAGE text-t14 TYPE 'E'.
ENDIF.
ELSE.
MESSAGE text-t14 TYPE 'E'.
ENDIF.
ELSE.
MESSAGE text-t23 TYPE 'E'.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0300 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0300 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'RW' OR '%EX'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form REMAP_ARTICLE_CHAR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM remap_article_char CHANGING pv_error.
TYPES : BEGIN OF ty_mc,
bukrs TYPE bukrs,
lifnr TYPE lifnr,
afgcmc TYPE matkl,
zlegmc TYPE zlegmc,
END OF ty_mc,
BEGIN OF ty_color,
bukrs TYPE bukrs,
lifnr TYPE lifnr,
zcafg TYPE zcafg,
zcdec TYPE zcdec,
END OF ty_color,
BEGIN OF ty_size,
bukrs TYPE bukrs,
lifnr TYPE lifnr,
zsafg TYPE zsafg,
zscod TYPE zscod,
END OF ty_size,
BEGIN OF ty_hscode,
bukrs TYPE bukrs,
lifnr TYPE lifnr,
source_wstaw TYPE zwstaw,
destn_wsta TYPE zwstaw,
END OF ty_hscode,
BEGIN OF ty_co,
bukrs TYPE bukrs,
lifnr TYPE lifnr,
zerkl TYPE herkl,
zcooc TYPE zcooc,
END OF ty_co.
DATA : lt_ret_stage TYPE TABLE OF ztm_retail_stage,
lt_mc_map TYPE TABLE OF ty_mc,
lt_size_map TYPE TABLE OF ty_size,
lt_season_map TYPE TABLE OF ztm_season_map,
lt_item_delete TYPE TABLE OF ztm_retail_stage,
lt_hscode_map TYPE TABLE OF ty_hscode,
lt_vend_fcn TYPE TABLE OF ztm_vend_fcn,
lt_error TYPE TABLE OF ztm_error_stage,
lt_co_map TYPE TABLE OF ty_co,
ls_vend_fcn TYPE ztm_vend_fcn,
ls_error TYPE ztm_error_stage,
ls_item_delete TYPE ztm_retail_stage,
lt_color_map TYPE TABLE OF ty_color.
DATA : lv_seqno TYPE numc4.
REFRESH : lt_item_delete.
READ TABLE gt_row_no INTO gs_row_no INDEX 1.
IF sy-subrc = 0.
READ TABLE gt_header INTO gs_header INDEX gs_row_no-row_id.
IF sy-subrc = 0.
IF gs_header-artcrtstatus = 'S'.
MESSAGE text-t24 TYPE 'I'.
RETURN.
ENDIF.
REFRESH gt_item.
IF p_amode IS INITIAL.
SELECT *
FROM ztm_retail_stage
INTO TABLE gt_item
WHERE bukrs = gs_header-bukrs
AND fshnid = gs_header-fshnid
AND reference = gs_header-reference
AND filename = gs_header-filename.
ELSE.
SELECT *
FROM ztm_retail_stage
INTO TABLE gt_item
WHERE bukrs = gs_header-bukrs
AND fshnid = gs_header-fshnid
AND reference = gs_header-reference
AND filename = gs_header-filename
AND amode = 'M'.
ENDIF.
IF sy-subrc = 0.
gt_item_fm[] = gt_item[].
DELETE gt_item_fm WHERE artcrtstatus = 'S'.
lt_ret_stage[] = gt_item_fm[].
SORT lt_ret_stage BY bukrs lifnr.
DELETE ADJACENT DUPLICATES FROM lt_ret_stage COMPARING bukrs lifnr.
IF lt_ret_stage[] IS NOT INITIAL.
SELECT * FROM ztm_vend_fcn INTO TABLE lt_vend_fcn
FOR ALL ENTRIES IN lt_ret_stage
WHERE zbukrs = lt_ret_stage-bukrs
AND lifnr = lt_ret_stage-lifnr
AND proctyp = p_brand.
ENDIF.
LOOP AT lt_vend_fcn INTO ls_vend_fcn.
IF ls_vend_fcn-mcmap = 'X'.
SELECT bukrs lifnr afgcmc zlegmc
APPENDING TABLE lt_mc_map
FROM ztm_mc_map
FOR ALL ENTRIES IN lt_ret_stage
WHERE bukrs = lt_ret_stage-bukrs
AND lifnr = lt_ret_stage-lifnr
AND zcatg = 'MCCAT'.
ENDIF.
* Color Mapping
IF ls_vend_fcn-colrmap = 'X'.
SELECT bukrs lifnr zcafg zcdec
APPENDING TABLE lt_color_map FROM ztm_color_map
FOR ALL ENTRIES IN lt_ret_stage
WHERE bukrs = lt_ret_stage-bukrs
AND lifnr = lt_ret_stage-lifnr.
ENDIF.
* Size Mapping
IF ls_vend_fcn-sizemap = 'X'.
SELECT bukrs lifnr zsafg zscod
APPENDING TABLE lt_size_map
FROM ztm_size_map
FOR ALL ENTRIES IN lt_ret_stage
WHERE bukrs = lt_ret_stage-bukrs
AND lifnr = lt_ret_stage-lifnr.
ENDIF.
* Season Mapping
IF ls_vend_fcn-sesnmap = 'X'.
SELECT *
FROM ztm_season_map
APPENDING TABLE lt_season_map FOR ALL ENTRIES IN lt_ret_stage
WHERE bukrs = lt_ret_stage-bukrs
AND lifnr = lt_ret_stage-lifnr.
ENDIF.
* Country of origin Mapping
IF ls_vend_fcn-coomap = 'X'.
SELECT bukrs lifnr zerkl zcooc
APPENDING TABLE lt_co_map
FROM ztm_coo_map FOR ALL ENTRIES IN lt_ret_stage
WHERE bukrs = lt_ret_stage-bukrs
AND lifnr = lt_ret_stage-lifnr.
ENDIF.
* HS Code Mapping
IF ls_vend_fcn-hscdmap = 'X'.
SELECT bukrs lifnr source_wstaw destn_wstaw
APPENDING TABLE lt_hscode_map
FROM ztm_hscode_map
FOR ALL ENTRIES IN lt_ret_stage
WHERE bukrs = lt_ret_stage-bukrs
AND lifnr = lt_ret_stage-lifnr..
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
DATA(gt_item_original) = gt_item_fm[].
LOOP AT gt_item_fm ASSIGNING FIELD-SYMBOL(<fs_retail_stage>).
ls_error-id = '00'.
ls_error-reference = <fs_retail_stage>-reference.
ls_error-bukrs = <fs_retail_stage>-bukrs.
ls_error-process = p_brand."lv_process_type.
ls_error-msgno = '398'.
lv_seqno = lv_seqno + 1.
ls_error-seq_no = lv_seqno.
READ TABLE lt_vend_fcn INTO ls_vend_fcn WITH KEY zbukrs = <fs_retail_stage
>-bukrs
lifnr = <fs_retail_stage>
-lifnr.
IF sy-subrc = 0.
IF ls_vend_fcn-mcmap = 'X'.
READ TABLE lt_mc_map INTO DATA(ls_mc_map) WITH KEY
bukrs = <fs_retail_stage>-bukrs
lifnr = <fs_retail_stage>-lifnr
zlegmc = <fs_retail_stage>-matkl_temp.
IF sy-subrc = 0.
IF <fs_retail_stage>-matkl <> ls_mc_map-afgcmc.
<fs_retail_stage>-matkl = ls_mc_map-afgcmc.
ENDIF.
ELSE.
lv_seqno = lv_seqno + 1.
ls_error-seq_no = lv_seqno.
ls_error-message = text-t17.
ls_error-message_v1 = <fs_retail_stage>-matkl_temp.
APPEND ls_error TO lt_error.
ENDIF.
ENDIF.
IF ls_vend_fcn-coomap = 'X'.
READ TABLE lt_co_map INTO DATA(ls_co_map) WITH KEY
bukrs = <fs_retail_stage>-bukrs
lifnr = <fs_retail_stage>-lifnr
zcooc = <fs_retail_stage>-herkl_temp.
IF sy-subrc = 0.
IF <fs_retail_stage>-herkl <> ls_co_map-zerkl.
<fs_retail_stage>-herkl = ls_co_map-zerkl.
ENDIF.
ELSE.
lv_seqno = lv_seqno + 1.
ls_error-seq_no = lv_seqno.
ls_error-message = text-t20.
ls_error-message_v1 = <fs_retail_stage>-herkl_temp.
APPEND ls_error TO lt_error.
ENDIF.
ENDIF.
IF ls_vend_fcn-hscdmap = 'X'.
READ TABLE lt_hscode_map INTO DATA(ls_hscd_map) WITH KEY
bukrs = <fs_retail_stage>-bukrs
lifnr = <fs_retail_stage>-lifnr
source_wstaw = <fs_retail_stage>-
wstaw_temp.
IF sy-subrc = 0.
IF <fs_retail_stage>-wstaw <> ls_hscd_map-destn_wsta.
<fs_retail_stage>-wstaw = ls_hscd_map-destn_wsta.
ENDIF.
ELSE.
lv_seqno = lv_seqno + 1.
ls_error-seq_no = lv_seqno.
ls_error-message = text-t21.
ls_error-message_v1 = <fs_retail_stage>-wstaw_temp.
APPEND ls_error TO lt_error.
ENDIF.
ENDIF.
IF ls_vend_fcn-sesnmap = 'X'.
READ TABLE lt_season_map INTO DATA(ls_season) WITH KEY
bukrs = <fs_retail_stage>-bukrs
lifnr = <fs_retail_stage>-lifnr
zssoc = <fs_retail_stage>-
saiso_temp.
IF sy-subrc EQ 0.
IF <fs_retail_stage>-saiso <> ls_season-saiso.
<fs_retail_stage>-saiso = ls_season-saiso.
IF ls_season-saisj IS NOT INITIAL.
<fs_retail_stage>-saisj = ls_season-saisj.
ENDIF.
ENDIF.
ELSE.
lv_seqno = lv_seqno + 1.
ls_error-seq_no = lv_seqno.
ls_error-message = text-t22.
ls_error-message_v1 = <fs_retail_stage>-saiso_temp.
APPEND ls_error TO lt_error.
ENDIF.
ENDIF.
IF ls_vend_fcn-colrmap = 'X'.
READ TABLE lt_color_map INTO DATA(ls_color_map) WITH KEY
bukrs = <fs_retail_stage>-bukrs
lifnr = <fs_retail_stage>-lifnr
zcdec = <fs_retail_stage>-color_temp.
IF sy-subrc = 0 .
IF <fs_retail_stage>-color
<> ls_color_map-zcafg .
<fs_retail_stage>-color = ls_color_map-zcafg.
READ TABLE gt_item_original INTO ls_item_delete WITH KEY bukrs =
<fs_retail_stage>-bukrs
fshnid =
<fs_retail_stage>-fshnid
model = <
fs_retail_stage>-model
reference
= <fs_retail_stage>-reference
itemno =
<fs_retail_stage>-itemno.
IF sy-subrc = 0.
APPEND ls_item_delete TO lt_item_delete.
ENDIF.
ENDIF.
ELSE.
lv_seqno = lv_seqno + 1.
ls_error-seq_no = lv_seqno.
ls_error-message = text-t18.
ls_error-message_v1 = <fs_retail_stage>-color_temp.
APPEND ls_error TO lt_error.
ENDIF.
ENDIF.
IF ls_vend_fcn-sizemap = 'X'.
READ TABLE lt_size_map INTO DATA(ls_size_map) WITH KEY
bukrs = <fs_retail_stage>-bukrs
lifnr = <fs_retail_stage>-lifnr
zscod = <fs_retail_stage>-
size1_temp.
IF sy-subrc = 0 .
IF <fs_retail_stage>-size1
<> ls_size_map-zsafg .
<fs_retail_stage>-size1 = ls_size_map-zsafg.
READ TABLE gt_item_original INTO ls_item_delete WITH KEY bukrs =
<fs_retail_stage>-bukrs
fshnid =
<fs_retail_stage>-fshnid
model = <
fs_retail_stage>-model
reference
= <fs_retail_stage>-reference
itemno =
<fs_retail_stage>-itemno.
IF sy-subrc = 0.
APPEND ls_item_delete TO lt_item_delete.
ENDIF.
ENDIF.
ELSE.
lv_seqno = lv_seqno + 1.
ls_error-seq_no = lv_seqno.
ls_error-message = text-t19.
ls_error-message_v1 = <fs_retail_stage>-size1_temp.
APPEND ls_error TO lt_error.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
MODIFY ztm_retail_stage FROM TABLE gt_item_fm.
COMMIT WORK.
IF lt_item_delete[] IS NOT INITIAL.
SORT lt_item_delete BY reference itemno.
DELETE ADJACENT DUPLICATES FROM lt_item_delete COMPARING reference itemno.
DELETE ztm_retail_stage FROM TABLE lt_item_delete.
ENDIF.
IF lt_error[] IS NOT INITIAL.
MODIFY ztm_error_stage FROM TABLE lt_error.
pv_error = 'X'.
MESSAGE text-t25 TYPE 'S'.
ENDIF.
COMMIT WORK.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CREATE_CUSTOM_REPORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_custom_item .
DATA : lt_details TYPE abap_compdescr_tab,
lt_details_new TYPE abap_compdescr_tab,
ls_details TYPE abap_compdescr.
DATA : lref_table_des TYPE REF TO cl_abap_structdescr.
DATA : lt_data TYPE REF TO data,
ls_data TYPE REF TO data.
DATA : lt_fcat_item TYPE lvc_t_fcat,
ls_fcat_item TYPE lvc_s_fcat.
FIELD-SYMBOLS : "<ft_item> TYPE STANDARD TABLE,
<fs_item> TYPE any.
lref_table_des ?= cl_abap_typedescr=>describe_by_name( 'ZTM_RETAIL_STAGE' ).
lt_details[] = lref_table_des->components[].
lref_table_des ?= cl_abap_typedescr=>describe_by_name( 'ZTM_KIABI_PIM' ).
lt_details_new[] = lref_table_des->components[].
LOOP AT lt_details_new INTO ls_details.
READ TABLE lt_details TRANSPORTING NO FIELDS WITH KEY name = ls_details-
name.
IF sy-subrc <> 0.
APPEND ls_details TO lt_details.
ENDIF.
ENDLOOP.
REFRESH gt_i_fcat.
SELECT * FROM ztm_art_rep_map INTO TABLE @DATA(lt_artmap)
WHERE bukrs IN @s_bukrs
AND fshnid = @p_brand(3).
IF sy-subrc = 0.
LOOP AT lt_artmap INTO DATA(ls_artmap).
IF ls_artmap-fieldlevel = 'ITEM'.
READ TABLE lt_details INTO ls_details WITH KEY name = ls_artmap-
fieldname.
IF sy-subrc = 0.
ls_fcat_item-fieldname = ls_artmap-fieldname.
CASE ls_details-type_kind.
WHEN 'C'.
ls_fcat_item-datatype = 'CHAR'.
WHEN 'N'.
ls_fcat_item-datatype = 'NUMC'.
WHEN 'D'.
ls_fcat_item-datatype = 'DATE'.
WHEN 'P'.
ls_fcat_item-datatype = 'PACK'.
WHEN OTHERS.
ls_fcat_item-datatype = ls_details-type_kind.
ENDCASE.
ls_fcat_item-inttype = ls_details-type_kind.
ls_fcat_item-intlen = ls_details-length.
ls_fcat_item-decimals = ls_details-decimals.
APPEND ls_fcat_item TO lt_fcat_item.
PERFORM fill_fields USING ls_artmap-fieldname '<FT_ITEM>' ls_artmap-
description.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_fcat_item
IMPORTING
ep_table = lt_data
EXCEPTIONS
generate_subpool_dir_full = 1
OTHERS = 2.
ASSIGN lt_data->* TO <ft_item>.
IF <ft_item> IS ASSIGNED.
CREATE DATA ls_data LIKE LINE OF <ft_item>.
ASSIGN ls_data->* TO <fs_item>.
LOOP AT gt_item INTO gs_item.
MOVE-CORRESPONDING gs_item TO <fs_item>.
READ TABLE gt_item_pim INTO gs_item_pim WITH KEY bukrs = gs_item-bukrs
fshnid = gs_item-fshnid
idnlf = gs_item-idnlf
reference = gs_item-
reference
model = gs_item-model
color = gs_item-color
size1 = gs_item-size1.
IF sy-subrc = 0.
MOVE-CORRESPONDING gs_item_pim TO <fs_item>.
ENDIF.
APPEND <fs_item> TO <ft_item>.
ENDLOOP.
PERFORM layout_item.
CALL METHOD go_item_grid->set_table_for_first_display
EXPORTING
is_layout = gs_i_layo
CHANGING
it_outtab = <ft_item>
it_fieldcatalog = gt_i_fcat[].
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILL_FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LS_ARTMAP_FIELDNAME text
* -->P_2063 text
* -->P_LS_ARTMAP_DESCRIPTION text
*----------------------------------------------------------------------*
FORM fill_fields USING p_fieldname
p_tabname
p_seltext.
CLEAR gs_i_fcat.
gs_i_fcat-fieldname = p_fieldname.
gs_i_fcat-tabname = p_tabname.
gs_i_fcat-seltext = p_seltext.
gs_i_fcat-scrtext_l = p_seltext.
APPEND gs_i_fcat TO gt_i_fcat.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CREATE_CUSTOM_ITEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_custom_header .
DATA : lt_details TYPE abap_compdescr_tab,
ls_details TYPE abap_compdescr.
DATA : lref_table_des TYPE REF TO cl_abap_structdescr.
DATA : lt_data TYPE REF TO data,
ls_data TYPE REF TO data.
DATA : lt_fcat_header TYPE lvc_t_fcat,
ls_fcat_header TYPE lvc_s_fcat.
FIELD-SYMBOLS : "<ft_header> TYPE STANDARD TABLE,
<fs_header> TYPE any.
lref_table_des ?= cl_abap_typedescr=>describe_by_name( 'ZTM_RETAIL_STAGE' ).
lt_details[] = lref_table_des->components[].
REFRESH gt_i_fcat.
SELECT * FROM ztm_art_rep_map INTO TABLE @DATA(lt_artmap)
WHERE bukrs IN @s_bukrs
AND fshnid = @p_brand(3).
IF sy-subrc = 0.
LOOP AT lt_artmap INTO DATA(ls_artmap).
IF ls_artmap-fieldlevel = 'HEADER'.
READ TABLE lt_details INTO ls_details WITH KEY name = ls_artmap-
fieldname.
IF sy-subrc = 0.
ls_fcat_header-fieldname = ls_artmap-fieldname.
CASE ls_details-type_kind.
WHEN 'C'.
ls_fcat_header-datatype = 'CHAR'.
WHEN 'N'.
ls_fcat_header-datatype = 'NUMC'.
WHEN 'D'.
ls_fcat_header-datatype = 'DATE'.
WHEN 'P'.
ls_fcat_header-datatype = 'PACK'.
WHEN OTHERS.
ls_fcat_header-datatype = ls_details-type_kind.
ENDCASE.
ls_fcat_header-inttype = ls_details-type_kind.
ls_fcat_header-intlen = ls_details-length.
ls_fcat_header-decimals = ls_details-decimals.
APPEND ls_fcat_header TO lt_fcat_header.
PERFORM fill_fields USING ls_artmap-fieldname '<FT_HEADER>' ls_artma
p-description.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_fcat_header
IMPORTING
ep_table = lt_data
EXCEPTIONS
generate_subpool_dir_full = 1
OTHERS = 2.
ASSIGN lt_data->* TO <ft_header>.
IF <ft_header> IS ASSIGNED.
CREATE DATA ls_data LIKE LINE OF <ft_header>.
ASSIGN ls_data->* TO <fs_header>.
LOOP AT gt_header_all INTO DATA(ls_header_all).
MOVE-CORRESPONDING ls_header_all TO <fs_header>.
APPEND <fs_header> TO <ft_header>.
ENDLOOP.
CALL METHOD go_header_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layo
CHANGING
it_outtab = <ft_header>
it_fieldcatalog = gt_i_fcat[].
ENDIF.
ENDFORM.
===================
===================
PROCESS AFTER INPUT.
MODULE user_command_0200.
===================
-=========================================