‎2006 Sep 10 10:15 PM
REPORT zmmrus160 NO STANDARD PAGE HEADING
LINE-SIZE 255 LINE-COUNT 65(3) MESSAGE-
INCLUDE zmmrus160top.
INCLUDE <icon>.
INITIALIZATION.
PERFORM initialize_variant.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM f4_for_variant.
AT SELECTION-SCREEN ON p_vari.
PERFORM validate_user_selection.
PERFORM check_variant.
AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON p_wrkst.
PERFORM authority_check.
START OF SELECTION ****
START-OF-SELECTION.
PERFORM get_materials.
PERFORM get_tlmap.
PERFORM validate_tlmap_mapl.
PERFORM build_events USING gt_events[].
PERFORM build_comment USING gt_list_top_of_page[].
PERFORM build_sp_group USING gt_sp_group[].
PERFORM build_sort.
PERFORM build_layout USING gs_layout.
PERFORM build_fieldcat CHANGING gt_fieldcat[].
END-OF-SELECTION.
PERFORM write_report_alv. "write report
&----
*& Form initialize_variant
&----
text
----
FORM initialize_variant .
CLEAR gs_variant.
gs_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = gs_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc EQ 0.
p_vari = gs_variant-variant.
ENDIF.
ENDFORM. " INITIALIZE_VARIANT
&----
*& Form f4_for_variant
&----
text
----
FORM f4_for_variant .
DATA: lv_exit.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = gs_variant
i_save = 'A'
IMPORTING
e_exit = lv_exit
es_variant = gs_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF lv_exit = space.
p_vari = gs_variant-variant.
ENDIF.
ENDIF.
gs_variant-report = sy-repid.
ENDFORM. "f4_for_variant
&----
*& Form check_variant
&----
text
----
FORM check_variant .
IF NOT p_vari IS INITIAL.
MOVE p_vari TO gs_variant-variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = gs_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDFORM. " check_variant
----
FORM GET_MATERIALS *
----
this form creates MATTAB
----
FORM get_materials.
*get materials for the report
SELECT matnr spart matkl prdha meins wrkst extwg groes normt
FROM mara
INTO TABLE gt_mara
WHERE matnr IN p_matnr
AND spart IN p_spart
AND matkl IN p_matkl
AND prdha IN p_prdha
AND wrkst IN p_wrkst
AND extwg IN p_extwg
AND groes IN p_groes
AND normt IN p_normt
AND lvorm = space.
CHECK sy-subrc IS INITIAL.
SELECT matnr werks
FROM marc
INTO TABLE gt_marc
FOR ALL ENTRIES IN gt_mara
WHERE matnr = gt_mara-matnr
AND werks IN p_werks
AND lvorm = space
AND mmsta IN (space, '01').
CHECK sy-subrc IS INITIAL.
SELECT matnr werks lgort
FROM mard
INTO TABLE gt_mard
FOR ALL ENTRIES IN gt_marc
WHERE matnr = gt_marc-matnr
AND werks = gt_marc-werks
AND lgort IN p_lgort
AND lvorm = space.
*
CHECK sy-subrc IS INITIAL.
*
SORT gt_mara BY matnr.
SORT gt_marc BY matnr werks.
SORT gt_mard BY matnr werks lgort.
ENDFORM. "GET_MATERIALS
&----
*& Form get_tlmap
&----
text
----
FORM get_tlmap.
DATA: BEGIN OF lt_tlmap OCCURS 0.
INCLUDE STRUCTURE zmmtlmap.
DATA: END OF lt_tlmap.
DATA: lv_fetflag LIKE zmmtlmap-fetflag.
*get task list map for the materials
LOOP AT gt_mara.
READ TABLE gt_marc WITH KEY matnr = gt_mara-matnr
BINARY SEARCH.
CHECK sy-subrc IS INITIAL.
LOOP AT gt_marc FROM sy-tabix.
IF gt_marc-matnr <> gt_mara-matnr.
EXIT.
ENDIF.
IF gt_mara-normt CS 'FET'.
lv_fetflag = 'X'.
ELSE.
CLEAR lv_fetflag.
ENDIF.
*select from ZMMTLMAP...
SELECT * FROM zmmtlmap
INTO TABLE lt_tlmap
WHERE werks = gt_marc-werks
AND spart = gt_mara-spart
AND matkl = gt_mara-matkl
AND wrkst = gt_mara-wrkst
AND groes = gt_mara-groes
AND fetflag = lv_fetflag
AND prdha = gt_mara-prdha.
IF NOT sy-subrc IS INITIAL.
*...sometimes seed size (GROES) can be blank
SELECT * FROM zmmtlmap
INTO TABLE lt_tlmap
WHERE werks = gt_marc-werks
AND spart = gt_mara-spart
AND matkl = gt_mara-matkl
AND wrkst = gt_mara-wrkst
AND groes = space
AND fetflag = lv_fetflag
AND prdha = gt_mara-prdha.
ENDIF.
IF NOT sy-subrc IS INITIAL.
*...look for blank PRDHA
SELECT * FROM zmmtlmap
INTO TABLE lt_tlmap
WHERE werks = gt_marc-werks
AND spart = gt_mara-spart
AND matkl = gt_mara-matkl
AND wrkst = gt_mara-wrkst
AND groes = gt_mara-groes
AND fetflag = lv_fetflag
AND prdha = space.
ENDIF.
IF NOT sy-subrc IS INITIAL.
*...look for blank PRDHA and GROES
SELECT * FROM zmmtlmap
INTO TABLE lt_tlmap
WHERE werks = gt_marc-werks
AND spart = gt_mara-spart
AND matkl = gt_mara-matkl
AND wrkst = gt_mara-wrkst
AND groes = space
AND fetflag = lv_fetflag
AND prdha = space.
ENDIF.
CHECK sy-subrc IS INITIAL.
LOOP AT lt_tlmap.
CLEAR gt_tlmap.
gt_tlmap-matnr = gt_mara-matnr.
MOVE-CORRESPONDING lt_tlmap TO gt_tlmap.
APPEND gt_tlmap.
ENDLOOP. "tlmap
ENDLOOP. "marc
ENDLOOP. "mara
ENDFORM. "get_tlmap
&----
*& Form validate_tlmap_mapl
&----
text
----
FORM validate_tlmap_mapl .
DATA: lv_plnnr.
LOOP AT gt_tlmap.
SELECT SINGLE plnnr
FROM mapl
INTO lv_plnnr
WHERE matnr = gt_tlmap-matnr
AND werks = gt_tlmap-werks
AND plnty = gt_tlmap-plnty
AND plnnr = gt_tlmap-plnnr
AND plnal = gt_tlmap-plnal
AND loekz = space.
IF sy-subrc IS INITIAL.
gt_tlmap-errflag = 'A'. "already assigned
gt_tlmap-notes = 'Already assigned'.
gt_tlmap-linecolor = 'C31'.
ENDIF.
MODIFY gt_tlmap.
ENDLOOP.
ENDFORM. " validate_tlmap_mapl
&----
*& Form build_fieldcat
&----
text
----
FORM build_fieldcat CHANGING lt_fieldcat TYPE slis_t_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'GT_TLMAP'
i_inclname = 'ZMMRUS160TOP'
CHANGING
ct_fieldcat = lt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc NE 0.
EXIT.
ENDIF.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
LOOP AT lt_fieldcat INTO ls_fieldcat.
*column headings, output lengths, field positions etc
CASE ls_fieldcat-fieldname.
WHEN 'ERRFLAG'.
ls_fieldcat-seltext_s = 'Error!'.
ls_fieldcat-seltext_m = 'Error!'.
ls_fieldcat-seltext_l = 'Error!'.
ls_fieldcat-reptext_ddic = 'Error!'.
WHEN 'NOTES'.
ls_fieldcat-seltext_s = 'Notes'.
ls_fieldcat-seltext_m = 'Notes'.
ls_fieldcat-seltext_l = 'Notes'.
ls_fieldcat-reptext_ddic = 'Notes'.
ENDCASE.
MODIFY lt_fieldcat FROM ls_fieldcat.
ENDLOOP.
ENDFORM. "build_fieldcat
&----
*& Form build_layout
&----
text
----
FORM build_layout USING ls_layout TYPE slis_layout_alv.
ls_layout-info_fieldname = 'LINECOLOR'.
LS_LAYOUT-BOX_FIELDNAME = 'BOX'.
LS_LAYOUT-LIGHTS_FIELDNAME = 'LIGHTS'.
ls_layout-zebra = 'X'.
LS_LAYOUT-NO_VLINE = 'X'.
ls_layout-no_unit_splitting = 'X'.
ls_layout-cell_merge = space.
ls_layout-totals_only = 'X'.
ls_layout-colwidth_optimize = 'X'.
ls_layout-no_sumchoice = 'X'.
ls_layout-no_subchoice = 'X'.
*
ls_layout-box_fieldname = 'CHECKBOX'.
ls_layout-box_tabname = 'GT_TLMAP'.
ls_layout-no_totalline = 'X'.
ls_layout-coltab_fieldname = 'CELLCOLORS'.
ENDFORM. "BUILD_LAYOUT
&----
*& Form build_sort
&----
text
----
FORM build_sort.
DATA: is_sort TYPE slis_sortinfo_alv.
REFRESH gt_sort.
CLEAR is_sort.
is_sort-spos = 1.
is_sort-fieldname = 'MATNR'.
is_sort-up = 'X'.
APPEND is_sort TO gt_sort.
CLEAR is_sort.
is_sort-spos = 2.
is_sort-fieldname = 'WERKS'.
is_sort-up = 'X'.
APPEND is_sort TO gt_sort.
CLEAR is_sort.
is_sort-spos = 3.
is_sort-fieldname = 'LGORT'.
is_sort-up = 'X'.
APPEND is_sort TO gt_sort.
ENDFORM. " build_sort
&----
*& Form build_sp_group
&----
text
----
FORM build_sp_group USING us_t_sp_group TYPE slis_t_sp_group_alv.
DATA: ls_sp_group TYPE slis_sp_group_alv.
*
CLEAR ls_sp_group.
ls_sp_group-sp_group = 'A'.
ls_sp_group-text = 'Key Fields'.
APPEND ls_sp_group TO us_t_sp_group.
CLEAR ls_sp_group.
ls_sp_group-sp_group = 'B'.
ls_sp_group-text = 'Forecast Quantities'.
APPEND ls_sp_group TO us_t_sp_group.
CLEAR ls_sp_group.
ls_sp_group-sp_group = 'C'.
ls_sp_group-text = 'Short Position'.
APPEND ls_sp_group TO us_t_sp_group.
RN MOD
CLEAR ls_sp_group.
ls_sp_group-sp_group = 'C'.
ls_sp_group-text = 'Ship Position'.
APPEND ls_sp_group TO us_t_sp_group.
CLEAR ls_sp_group.
ls_sp_group-sp_group = 'C'.
ls_sp_group-text = 'Shippable Qty'.
APPEND ls_sp_group TO us_t_sp_group.
CLEAR ls_sp_group.
ls_sp_group-sp_group = 'C'.
ls_sp_group-text = 'Rebag Qty'.
APPEND ls_sp_group TO us_t_sp_group.
CLEAR ls_sp_group.
ls_sp_group-sp_group = 'C'.
ls_sp_group-text = 'Retag Shippable'.
APPEND ls_sp_group TO us_t_sp_group.
ENDFORM. "build_sp_group
&----
*& Form pf_status_set
&----
text
----
-->EXTAB text
----
FORM pf_status_set USING extab TYPE slis_t_extab.
SET PF-STATUS 'ALV_STATUS' EXCLUDING extab.
ENDFORM. "PF_STATUS_SET
&----
*& Form build_events
&----
text
----
-->US_T_EVENTStext
----
FORM build_events USING us_t_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = us_t_events.
READ TABLE us_t_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE gc_form_top_of_page TO ls_event-form.
APPEND ls_event TO us_t_events.
ENDIF.
READ TABLE us_t_events WITH KEY name = slis_ev_user_command
INTO ls_event.
IF sy-subrc = 0.
MOVE gc_form_user_command TO ls_event-form.
APPEND ls_event TO us_t_events.
ENDIF.
ENDFORM. "build_EVENTs
&----
*& Form build_comment
&----
text
----
FORM build_comment USING us_t_top_of_page TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
DATA: tmp_char(10).
ls_line-typ = 'H'.
ls_line-info = text-h01.
APPEND ls_line TO us_t_top_of_page.
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'User/System:'.
CONCATENATE sy-uname sy-sysid sy-mandt
INTO ls_line-info SEPARATED BY space.
APPEND ls_line TO us_t_top_of_page.
ls_line-key = 'Date/Time:'.
WRITE sy-datlo TO ls_line-info.
WRITE sy-timlo TO tmp_char.
CONCATENATE ls_line-info tmp_char sy-zonlo
INTO ls_line-info SEPARATED BY space.
APPEND ls_line TO us_t_top_of_page.
ENDFORM. " build_COMMENT
&----
*& Form top_of_page
&----
text
----
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'ENJOYSAP_LOGO'
it_list_commentary = gt_list_top_of_page.
ENDFORM. "TOP_OF_PAGE
&----
*& Form write_report_alv
&----
text
----
--> p1 text
<-- p2 text
----
FORM write_report_alv .
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_callback_pf_status_set = 'PF_STATUS_SET'
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
it_sort = gt_sort[]
i_save = 'A'
it_events = gt_events[]
TABLES
t_outtab = gt_tlmap
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "write_report_alv
&----
*& Form user_command
&----
text
----
FORM user_command USING ucomm TYPE sy-ucomm selfield TYPE slis_selfield.
CASE sy-ucomm.
WHEN 'PROCESS'.
PERFORM process_materials.
selfield-refresh = 'X'.
ENDCASE.
ENDFORM. "USER_COMMAND
&----
*& Form process_materials
&----
text
----
FORM process_materials .
REFRESH gt_taskl.
LOOP AT gt_tlmap WHERE checkbox = 'X'.
CHECK gt_tlmap-errflag IS INITIAL.
CLEAR gt_taskl.
MOVE-CORRESPONDING gt_tlmap TO gt_taskl.
APPEND gt_taskl.
ENDLOOP.
SORT gt_taskl BY werks plnty plnnr matnr.
PERFORM bdc_assign_to_tasklists.
PERFORM bapi_assign_to_tasklists.
LOOP AT gt_tlmap.
READ TABLE gt_taskl WITH KEY werks = gt_tlmap-werks
plnty = gt_tlmap-plnty
plnnr = gt_tlmap-plnnr
matnr = gt_tlmap-matnr
BINARY SEARCH.
CHECK sy-subrc IS INITIAL.
CLEAR gt_tlmap-checkbox.
READ TABLE gt_errtab WITH KEY plnty = gt_tlmap-plnty
plnnr = gt_tlmap-plnnr
BINARY SEARCH.
IF sy-subrc IS INITIAL.
gt_tlmap-errflag = 'X'.
gt_tlmap-notes = gt_errtab-notes.
ELSE.
gt_tlmap-errflag = 'P'.
gt_tlmap-notes = 'Processed'.
ENDIF.
IF gt_tlmap-errflag = 'X'.
gt_tlmap-linecolor = 'C61'.
ELSEIF gt_tlmap-errflag = 'P'.
gt_tlmap-linecolor = 'C51'.
ENDIF.
MODIFY gt_tlmap.
ENDLOOP.
ENDFORM. " process_materials
&----
*& Form bdc_assign_to_tasklists
&----
text
----
FORM bdc_assign_to_tasklists .
LOOP AT gt_taskl.
AT NEW plnty.
IF gt_taskl-plnty = c_plnty_rout.
gv_scr_init = '1010'.
gv_scr_assn = '1010'.
gv_tran = 'CA02'.
ELSEIF gt_taskl-plnty = c_plnty_insp.
gv_scr_init = '8010'.
gv_scr_assn = '4010'.
gv_tran = 'QP02'.
ENDIF.
ENDAT.
AT NEW plnnr.
REFRESH bdctab.
PERFORM bdc_dynpro USING: 'X' 'SAPLCPDI' gv_scr_init,
' ' 'RC27M-WERKS' space,
' ' 'RC27M-MATNR' space,
' ' 'RC271-PLNNR' gt_taskl-plnnr,
' ' 'RC271-PLNAL' space,
' ' 'BDC_OKCODE' '=ALUE'.
PERFORM bdc_dynpro USING: 'X' 'SAPLCPDI' '1200',
' ' 'BDC_OKCODE' '=MTUE'.
PERFORM bdc_dynpro USING: 'X' 'SAPLCZDI' gv_scr_assn,
' ' 'BDC_OKCODE' 'P++'.
ENDAT.
PERFORM bdc_dynpro USING: 'X' 'SAPLCZDI' gv_scr_assn,
' ' 'BDC_OKCODE' 'P+'.
SHIFT gt_taskl-matnr LEFT DELETING LEADING '0'.
PERFORM bdc_dynpro USING: 'X' 'SAPLCZDI' gv_scr_assn,
' ' 'BDC_OKCODE' 'P+',
' ' 'MAPL-PLNAL(2)' gt_taskl-plnal,
' ' 'MAPL-MATNR(2)' gt_taskl-matnr,
' ' 'MAPL-WERKS(2)' gt_taskl-werks.
AT END OF plnnr.
PERFORM bdc_dynpro USING: 'X' 'SAPLCZDI' gv_scr_assn,
' ' 'BDC_OKCODE' '/00'.
PERFORM bdc_dynpro USING: 'X' 'SAPLCPDI' '1200',
' ' 'BDC_OKCODE' '=BU'.
PERFORM call_tran USING gv_tran.
IF NOT bdcrc IS INITIAL.
PERFORM store_error.
ENDIF.
ENDAT.
ENDLOOP.
SORT gt_errtab BY plnty plnnr.
ENDFORM. "bdc_assign_to_tasklists
&----
*& Form bdc_dynpro
&----
text
----
FORM bdc_dynpro USING dynbegin name value.
CLEAR bdctab.
IF dynbegin EQ charx.
MOVE: name TO bdctab-program,
value TO bdctab-dynpro,
charx TO bdctab-dynbegin.
ELSE.
MOVE: name TO bdctab-fnam,
value TO bdctab-fval.
ENDIF.
APPEND bdctab.
ENDFORM. " BDC_DYNPRO
&----
*& Form call_tran
&----
text
----
FORM call_tran USING tcode.
CLEAR bdcmsg. REFRESH bdcmsg.
CALL TRANSACTION tcode
USING bdctab
MODE bdcmode
UPDATE bdcupdt
MESSAGES INTO bdcmsg.
bdcrc = sy-subrc.
ENDFORM. " CALL_TRAN
&----
*& Form bapi_assign_to_tasklists
&----
FORM bapi_assign_to_tasklists .
DATA: save_di LIKE save_di.
DATA: BEGIN OF mapl_di OCCURS 0.
INCLUDE STRUCTURE mapl_di.
DATA: END OF mapl_di.
DATA: error_di_exp LIKE error_di.
DATA: plnnr_exp LIKE rc271-plnnr.
DATA: BEGIN OF error_di_tab OCCURS 0.
INCLUDE STRUCTURE error_di.
DATA: END OF error_di_tab.
DATA: BEGIN OF errtab OCCURS 0.
INCLUDE STRUCTURE cmfmsg.
DATA: END OF errtab.
DATA: BEGIN OF rcuob1 OCCURS 0.
INCLUDE STRUCTURE rcuob1.
DATA: END OF rcuob1.
DATA: BEGIN OF obj_nfield OCCURS 0.
INCLUDE STRUCTURE obj_nfield.
DATA: END OF obj_nfield.
DATA: BEGIN OF rcuob1_ex OCCURS 0.
INCLUDE STRUCTURE rcuob1_ex.
DATA: END OF rcuob1_ex.
DATA: BEGIN OF rcuob2 OCCURS 0.
INCLUDE STRUCTURE rcuob2.
DATA: END OF rcuob2.
relevant ones ---
DATA: rc271_ex LIKE rc271_ex.
DATA: BEGIN OF mapl_di_ex OCCURS 0.
INCLUDE STRUCTURE mapl_di_ex.
DATA: END OF mapl_di_ex.
relevant ones ---
DATA: BEGIN OF plko_di_ex OCCURS 0.
INCLUDE STRUCTURE plko_di_ex.
DATA: END OF plko_di_ex.
DATA: BEGIN OF plpo_di_ex OCCURS 0.
INCLUDE STRUCTURE plpo_di_ex.
DATA: END OF plpo_di_ex.
DATA: BEGIN OF plfl_di_ex OCCURS 0.
INCLUDE STRUCTURE plfl_di_ex.
DATA: END OF plfl_di_ex.
DATA: BEGIN OF plmz_di_ex OCCURS 0.
INCLUDE STRUCTURE plmz_di_ex.
DATA: END OF plmz_di_ex.
DATA: BEGIN OF plfh_di_ex OCCURS 0.
INCLUDE STRUCTURE plfh_di_ex.
DATA: END OF plfh_di_ex.
DATA: BEGIN OF txt_obj_ex OCCURS 0.
INCLUDE STRUCTURE txt_obj_ex.
DATA: END OF txt_obj_ex.
DATA: BEGIN OF txt_di_tab OCCURS 0.
INCLUDE STRUCTURE tline.
DATA: END OF txt_di_tab.
LOOP AT gt_taskl.
*XXX when does QP02 come in - test that scenario
AT NEW plnty.
IF gt_taskl-plnty = c_plnty_rout.
gv_scr_init = '1010'.
gv_scr_assn = '1010'.
gv_tran = 'CA02'.
ELSEIF gt_taskl-plnty = c_plnty_insp.
gv_scr_init = '8010'.
gv_scr_assn = '4010'.
gv_tran = 'QP02'.
ENDIF.
ENDAT.
rc271_ex-tcode = gv_tran.
rc271_ex-werks = gt_taskl-werks.
rc271_ex-plnnr = gt_taskl-plnnr.
rc271_ex-plnal = gt_taskl-plnal.
rc271_ex-sttag = sy-datum.
WRITE sy-datum TO rc271_ex-sttag MM/DD/YYYY.
save_di-syn_save = 'X'.
mapl_di_ex-matnr = gt_taskl-matnr.
mapl_di_ex-werks = gt_taskl-werks.
mapl_di_ex-plnal = gt_taskl-plnal.
mapl_di_ex-acttyp = 'H'.
APPEND mapl_di_ex.
CALL FUNCTION 'CP_BD_DIRECT_INPUT_PLAN_EXT'
EXPORTING
rc271_ex_imp = rc271_ex
RC27M_EX_IMP = ''
save_di_imp = save_di
IMPORTING
error_di_exp = error_di_exp
plnnr_exp = plnnr_exp
TABLES
plko_di_ex_tab = plko_di_ex
mapl_di_ex_tab = mapl_di_ex
plpo_di_ex_tab = plpo_di_ex
plfl_di_ex_tab = plfl_di_ex
plmz_di_ex_tab = plmz_di_ex
plfh_di_ex_tab = plfh_di_ex
text_obj_di_ex_tab = txt_obj_ex
text_di_tab = txt_di_tab
knowl_alloc_obj_di_ex_tab = rcuob1_ex
knowl_alloc_di_ex_tab = rcuob2
obj_null_field_tab = obj_nfield
error_plan_di_tab = error_di_tab
error_plan_tab = errtab.
READ TABLE errtab INDEX 1.
IF errtab-msgty = 'E'.
gt_errtab-plnty = gt_taskl-plnty.
gt_errtab-plnnr = gt_taskl-plnnr.
DATA: msgtxt(250).
SELECT SINGLE text FROM t100
INTO msgtxt
WHERE sprsl = 'E'
AND arbgb = errtab-arbgb
AND msgnr = errtab-msgnr.
IF NOT sy-subrc IS INITIAL.
gt_errtab-notes = errtab-msgv1.
ELSE.
REPLACE '&' WITH errtab-msgv1 INTO gt_errtab-notes.
CONDENSE gt_errtab-notes.
REPLACE '&' WITH errtab-msgv2 INTO gt_errtab-notes.
CONDENSE gt_errtab-notes.
REPLACE '&' WITH errtab-msgv3 INTO gt_errtab-notes.
CONDENSE gt_errtab-notes.
REPLACE '&' WITH errtab-msgv4 INTO gt_errtab-notes.
CONDENSE gt_errtab-notes.
ENDIF.
APPEND gt_errtab.
ENDIF.
ENDLOOP.
SORT gt_errtab BY plnty plnnr.
ENDFORM. " bapi_assign_to_tasklists
&----
*& Form store_error
&----
FORM store_error .
CLEAR gt_errtab.
gt_errtab-plnty = gt_taskl-plnty.
gt_errtab-plnnr = gt_taskl-plnnr.
READ TABLE bdcmsg WITH KEY msgtyp = 'E'.
PERFORM get_message_text USING bdcmsg
CHANGING gt_errtab-notes.
APPEND gt_errtab.
ENDFORM. " store_error
&----
*& Form get_message_text
&----
FORM get_message_text USING us_bdcmsg STRUCTURE bdcmsgcoll
CHANGING ch_msgtxt.
DATA: msgtxt(250).
SELECT SINGLE text FROM t100
INTO msgtxt
WHERE sprsl = us_bdcmsg-msgspra
AND arbgb = us_bdcmsg-msgid
AND msgnr = us_bdcmsg-msgnr.
IF NOT sy-subrc IS INITIAL.
msgtxt = us_bdcmsg-msgv1.
ELSE.
REPLACE '&' WITH us_bdcmsg-msgv1 INTO msgtxt.
CONDENSE msgtxt.
REPLACE '&' WITH us_bdcmsg-msgv2 INTO msgtxt.
CONDENSE msgtxt.
REPLACE '&' WITH us_bdcmsg-msgv3 INTO msgtxt.
CONDENSE msgtxt.
REPLACE '&' WITH us_bdcmsg-msgv4 INTO msgtxt.
CONDENSE msgtxt.
ENDIF.
ch_msgtxt = msgtxt.
ENDFORM. "GET_MESSAGE_TEXT
‎2006 Sep 10 10:34 PM
Hi
It's a program uses ALV tools to display the data of material, what don't you understand?
Max
‎2006 Sep 21 12:28 AM
Thanks for the reply..I guess I was topo vague is asking the previous question.
For the same program.The program is using direct input method to update the routing of the material i.e CA02. I want to know will it work for inspection as well i.e QP02.If it can work what modification will i have to make here in this funtion module.
If this does not work, is there any direct input method to do the inspection plan for materials.
The name of the function module is CP_BD_DIRECT_INPUT_PLAN_EXT.
Thanks in adnace
deepak
‎2006 Sep 21 6:53 AM
Hi
I don't know that fm but probably It could work for your case too: CA02 and QP02 run the same program. Try!
Max
‎2006 Sep 21 11:49 PM
Hi Max,
That fm does not work for qp02.
Do you have any idea as to what fm would help me to assign the material for inspection.
thanks
deepak
‎2006 Sep 21 7:17 AM
Hello,
It displays the Material data in an ALV grid.
Regards,
Shehryar