启动物料帐后不可更改物料价格的处理方法
問題名稱Issue?Title:?物料期間狀態不對,?無法在MR21中更新物料價格
問題具體描述Description:
用戶需要更新部分物料在200X年1月的標準價格.?這些物料在1月沒有發生任何業務,?通常情況下應顯示為"公開期間(Period?opened),?但系統中的顯示狀態是"輸入的數量和值(Quantity?and?value?entered)",?在此狀態下,?無法通過MR21更新標準價格.
問題解決方案Resolution:?根據SAP?OSS?NOTE?574930中的提示,?加入源代碼,?程序名為"ZCKML_RESET_STATUS_OF_PERIOD",?并在此基礎上修改并存為ZCKML_RESET_STATUS_OF_PERIOD_2",?在SA38中運行此程序,?系統將調整物料的期間狀態為"公開期間(Period?opend)",?這時可以通過MR21調整物料的標準價格.
[@more@] Note574930 Symptom If?you?use?actual?costing?and?material?price?determination?3,?you?can?only?change?or?release?prices?of?marked?cost?estimates?for?a?material?at?the?beginning?of?the?period,?as?long?as?no?goods?movements,?invoices,?and?so?on?have?been?created?for?the?material.?If?you?then?try?to?carry?out?a?price?change,?the?system?generates?message?C+811?or?C+212.?This?behavior?is?explained?in?SAP?Note?555176.
The?system?also?does?not?reset?the?status?to?the?original?value?if?either?the?goods?movements?causing?this?situation?or?the?actual?costing?closing?entry?have?been?reversed.
CNACT,?MR21,?CKME,?CK24
SolutionThis?note?provides?a?program?that?allows?the?status?to?be?reset?to?'Period?opened'?(10)?under?the?following?conditions:
-
Goods?movements?are?completely?reversed
-
The?collected?price?differences?and?exchange?rate?differences?are?zero?in?all?currencies.?Generally,?this?is?also?possible?by?reversing?all?transactions?that?have?been?carried?out.
-
The?status?of?the?previous?period?is?not?'Closing?entry?performed'.
-
The?material?is?not?locked?by?another?user.
-
The?relevant?period?is?the?current?period.?After?resetting?the?status,?it?is?possible?to?carry?out?price?changes?in?the?period?again.
Since?the?status?information?is?represented?in?the?output?table?only?as?figures,?the?following?is?a?list?of?the?status?texts:
Not?defined?'00'
New?objects?'01'
Period?opened?'10'
Price?change?completed?'20'
Quantities?and?values?entered?'30'
Values?entered?'31'
Price?determined?single-level?'40'
Price?determined?multi-level?'50'
Closing?entry?reversed?'60'
Closing?entry?performed?'70'
After?generating?and?activating?the?program,?you?can?maintain?the?selection?texts:?SE38?Goto?-?Program?texts?-?Selection?texts.?For?all?texts,?mark?checkbox?'from?Dictionary'?or?copy?the?menu?function?from?the?DataDictionary(DD).
In?addition,?maintain?the?selection?texts?of?the?parameters:
Name?Text
P_EBEW?Selection?of?sales?order?stock
P_MBEW?Selection?of?stock?material
P_QBEW?Selection?of?project?stock
?
相關程序
*&---------------------------------------------------------------------* *& Report zckml_reset_status_of_period *&---------------------------------------------------------------------* *& Resets the ML period status to 'period opened' if the circumstances *& allow that. Additional SAP-Program from note 574930 * *&---------------------------------------------------------------------* REPORT zckml_reset_status_of_period.INCLUDE lckm0top_status.TABLES:ckmlhd,ckmlpp,marv,mara,sscrfields.TYPE-POOLS:slis, ckmv0.TYPES: " allow input range bwkeyBEGIN OF ty_bwkey,bwkey LIKE ckmlhd-bwkey,END OF ty_bwkey.DATA : prev_status LIKE ckmlpp-status.DATA : t_bwkey TYPE ty_bwkey OCCURS 0 WITH HEADER LINE,t_kalnr_all TYPE ckmv0_matobj_tbl WITH HEADER LINE,f_ckmlpp type ckmlpp,f_ckmlcr type ckmlcr.* Fieldcatalogs DATA:gd_fieldcat TYPE slis_t_fieldcat_alv,* ALVgd_program LIKE sy-repid,gd_tabname TYPE slis_tabname,gd_top_of_list TYPE slis_t_listheader.DATA:BEGIN OF gd_tbl OCCURS 0,kalnr LIKE ckmlhd-kalnr, "Kalnr des Material-Objektsbwkey LIKE ckmlhd-bwkey, "Bewertungskreismatnr LIKE ckmlhd-matnr, "Materialnummerbwtar LIKE ckmlhd-bwtar, "Bewertungsartvbeln LIKE ckmlhd-vbeln, "Kundenauftragsnummerposnr LIKE ckmlhd-posnr, "Kundenauftragspositionpspnr LIKE ckmlhd-pspnr, "PSP-Elementflg_lock LIKE boole-boole, "Kz: Objekt ist gesperrtmlast like ckmlhd-mlast,prev_status LIKE ckmlpp-status, "Previous status of CKMLPPstatus LIKE ckmlpp-status, "Updated or current statuschanged LIKE boole-boole, "Set if record is changedEND OF gd_tbl.data: lf_tbl like line of gd_tbl. data: h_change_allowed type boole. DATA: BWTAR_EXIST TYPE XFELD,VBELN_EXIST TYPE XFELD,PSPNR_EXIST TYPE XFELD.SELECT-OPTIONS: r_matnr FOR ckmlhd-matnr MEMORY ID mat. SELECT-OPTIONS: r_bwkey FOR ckmlhd-bwkey OBLIGATORY MEMORY ID bwk. SELECT-OPTIONS: r_bwtar FOR ckmlhd-bwtar MEMORY ID bwt. PARAMETERS: P_MBEW AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN SKIP. PARAMETERS: P_EBEW AS CHECKBOX DEFAULT 'X'. SELECT-OPTIONS: R_VBELN FOR CKMLHD-VBELN. SELECT-OPTIONS: R_POSNR FOR CKMLHD-POSNR. SELECTION-SCREEN SKIP. PARAMETERS: P_QBEW AS CHECKBOX DEFAULT 'X'. SELECT-OPTIONS: R_PSPNR FOR CKMLHD-PSPNR. SELECTION-SCREEN SKIP. PARAMETERS: p_bdatj LIKE ckmlpp-bdatj OBLIGATORY MEMORY ID bdtj,P_POPER LIKE MARV-LFMON OBLIGATORY MEMORY ID POPR.SELECTION-SCREEN SKIP. SELECT-OPTIONS: r_mtart FOR mara-mtart MEMORY ID mta MODIF ID puk,r_matkl FOR mara-matkl MEMORY ID mtl MODIF ID puk,r_spart FOR mara-spart MEMORY ID spa MODIF ID puk.SELECTION-SCREEN SKIP. SELECTION-SCREEN BEGIN OF BLOCK processing WITH FRAME TITLE text-001. PARAMETERS: p_test LIKE cki_doc_ml-test DEFAULT 'X'. SELECTION-SCREEN END OF BLOCK processing.DATA: PREV_POPER LIKE CKMLPP-POPER,PREV_BDATJ LIKE CKMLPP-BDATJ.DATA PREV_PP_STATUS LIKE CKMLPP-STATUS.******************** AT SELECTION-SCREEN. ********************DATA: lf_t001k LIKE t001k.DATA:ft_t001k LIKE t001k OCCURS 0 WITH HEADER LINE.CLEAR:ft_t001k.REFRESH:ft_t001k,t_bwkey.* Use range so_bwkey to fill internal table ft_t001k with a list of * BWKEY BUKRS MLBWASELECT * FROM t001kINTO TABLE ft_t001kWHERE BWKEY IN R_BWKEYAND MLBWA = 'X'.IF sy-subrc <> 0. * No BWKEY found for this input (range)MESSAGE s101(C+)WITH 'No valuation area found for this input (range)'.EXIT.ENDIF.* Fill internal table lt_bwkey with bwkey from ft_t001kLOOP AT ft_t001k.t_bwkey-bwkey = ft_t001k-bwkey.CALL FUNCTION 'MARV_SINGLE_READ'EXPORTINGbukrs = ft_t001k-bukrsIMPORTINGwmarv = marv.IF P_BDATJ NE MARV-LFGJA OR P_POPER NE MARV-LFMON.MESSAGE W101(C+) WITHMARV-LFMONMARV-LFGJA'is the current period in valuation area'FT_T001K-BWKEY.CONTINUE.ENDIF.APPEND t_bwkey.ENDLOOP.******************* START-OF-SELECTION. ******************* * determine period and year of previous period.IF P_POPER GT 1 ANDP_POPER LE 12.PREV_POPER = P_POPER - 1.PREV_BDATJ = P_BDATJ.ELSE.PREV_POPER = '12'.PREV_BDATJ = P_BDATJ - 1.ENDIF.REFRESH: gd_tbl.LOOP AT t_bwkey.REFRESH: t_kalnr_all.PERFORM XBEW_SELECTION TABLES R_MATNRR_BWTARR_VBELNR_POSNRR_PSPNRR_MTARTR_MATKLR_SPARTT_KALNR_ALLUSING T_BWKEY-BWKEY.LOOP AT t_kalnr_all.clear h_change_allowed.* write into output tableclear lf_tbl.MOVE-CORRESPONDING t_kalnr_all TO lf_tbl.** Read ML data and check if status reset is allowedSELECT SINGLE MLAST FROM CKMLHD INTO LF_TBL-MLASTWHERE KALNR = T_KALNR_ALL-KALNR.IF SY-SUBRC = 0.IF LF_TBL-MLAST = '3'. * Read ML data and check if status reset is allowedSELECT single * FROM ckmlpp into f_ckmlppWHERE kalnr = t_kalnr_all-kalnrAND poper = p_poperAND bdatj = p_bdatjAND untper = '000'.IF sy-subrc ne 0. * period not yet shifted...lf_tbl-prev_status = y_periode_eroeffnet.lf_tbl-status = y_periode_eroeffnet.else.MOVE-CORRESPONDING f_ckmlpp TO lf_tbl.lf_tbl-prev_status = f_ckmlpp-status.clear lf_tbl-changed.if f_ckmlpp-status ne y_neu_angelegtand f_ckmlpp-status ne y_periode_eroeffnet.* check that PP-data allow resetting statusif f_ckmlpp-status = y_abschlussbuchung_erfolgtor f_ckmlpp-zukumo ne 0or f_ckmlpp-umkumo ne 0or f_ckmlpp-szkumo ne 0or f_ckmlpp-vpkumo ne 0or f_ckmlpp-vnkumo ne 0.clear h_change_allowed.else. * check that no collected values in any currencies existselect * from ckmlcr into f_ckmlcrWHERE kalnr = f_ckmlpp-kalnrAND poper = f_ckmlpp-poperAND bdatj = f_ckmlpp-bdatjAND untper = f_ckmlpp-untper.if f_ckmlcr-ZUUMB_O ne 0or f_ckmlcr-abprd_o ne 0or f_ckmlcr-abkdm_o ne 0or f_ckmlcr-zuprd_o ne 0or f_ckmlcr-zukdm_o ne 0or f_ckmlcr-vpprd_o ne 0or f_ckmlcr-vpkdm_o ne 0or f_ckmlcr-vnprd_o ne 0or f_ckmlcr-vnkdm_o ne 0.clear h_change_allowed.exit.else. * now check that previous period is not already posted * would lead to problems with zuumb generated by price changeSELECT SINGLE STATUS FROM CKMLPP INTO PREV_PP_STATUSWHERE KALNR = T_KALNR_ALL-KALNRAND POPER = PREV_POPERAND BDATJ = PREV_BDATJAND UNTPER = '000'.IF SY-SUBRC = 0 ANDPREV_PP_STATUS EQ Y_ABSCHLUSSBUCHUNG_ERFOLGT.CLEAR H_CHANGE_ALLOWED.ELSE.h_change_allowed = 'X'. * show new status on listinglf_tbl-status = y_periode_eroeffnet.ENDIF.endif.endselect.endif.if h_change_allowed = 'X'. * changes are allowed, reset the status nowprev_status = f_ckmlpp-status.IF p_test IS INITIAL. * try to block meaterialCALL FUNCTION 'ENQUEUE_EMMBEWE'EXPORTINGMATNR = t_kalnr_all-MATNRBWKEY = t_kalnr_all-BWKEYBWTAR = t_kalnr_all-BWTAREXCEPTIONSOTHERS = 3.if sy-subrc = 0.UPDATE ckmlppSET status = y_periode_eroeffnetWHERE kalnr = f_ckmlpp-kalnrAND poper = f_ckmlpp-poperAND bdatj = f_ckmlpp-bdatjAND untper = f_ckmlpp-untper.COMMIT WORK.lf_tbl-status = y_periode_eroeffnet.else.lf_tbl-status = lf_tbl-prev_status.clear h_change_allowed.lf_tbl-flg_lock = 'X'.ENDIF.endif.else.lf_tbl-status = lf_tbl-prev_status.endif.lf_tbl-changed = h_change_allowed.ENDIF.endif.ENDIF.ELSE. "keine bew. Material z.B. UNBW / NLAGCONTINUE. "黚ergehenENDIF.append lf_tbl to gd_tbl.ENDLOOP.ENDLOOP.PERFORM display_alv.*----------------------------------------------------------------------* * FORM DISPLAY_ALV *----------------------------------------------------------------------* * Display of all events of one protocoll *----------------------------------------------------------------------* FORM display_alv.PERFORM alv_ge_top_of_page.PERFORM alv_ge_fieldcat.PERFORM alv_display.ENDFORM.*&---------------------------------------------------------------------* *& Form alv_ge_top_of_page *&---------------------------------------------------------------------* FORM alv_ge_top_of_page.DATA: wa_line TYPE slis_listheader.CLEAR wa_line.REFRESH gd_top_of_list.* Test RunIF p_test IS INITIAL.wa_line-typ = 'H'.wa_line-key = 'Period status overview'.wa_line-info = 'Period status overview'.APPEND wa_line TO gd_top_of_list.ELSE.wa_line-typ = 'H'.wa_line-key = 'Period status overview (Test Run)'.wa_line-info = 'Period status overview (Test Run)'.APPEND wa_line TO gd_top_of_list.ENDIF.* Jahrwa_line-typ = 'S'.wa_line-key = 'Year'.wa_line-info = p_bdatj.APPEND wa_line TO gd_top_of_list.* Periodwa_line-typ = 'S'.wa_line-key = 'Posting Period'.wa_line-info = p_poper.APPEND wa_line TO gd_top_of_list.ENDFORM. " alv_ge_top_of_page*----------------------------------------------------------------------* * FORM ALV_GE_EVENT_FIELDCAT *----------------------------------------------------------------------* FORM alv_ge_fieldcat.DATA:ld_wa_fieldcat LIKE LINE OF gd_fieldcat,COLPOS LIKE LD_WA_FIELDCAT-COL_POS,ld_tabix LIKE sy-tabix.* Initialization of the fieldcatgd_program = sy-repid.gd_tabname = 'GD_TBL'.CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'EXPORTINGi_program_name = gd_programi_internal_tabname = gd_tabnamei_inclname = gd_programi_bypassing_buffer = 'X'CHANGINGct_fieldcat = gd_fieldcat.* Modification of the fieldcatCLEAR: COLPOS.LOOP AT gd_fieldcat INTO ld_wa_fieldcat.ld_tabix = sy-tabix.CASE ld_wa_fieldcat-fieldname.WHEN 'BWKEY'.COLPOS = COLPOS + 1.LD_WA_FIELDCAT-NO_OUT = SPACE. "ausgebenLD_WA_FIELDCAT-COL_POS = COLPOS.LD_WA_FIELDCAT-KEY = 'X'. "SchluesselspalteLD_WA_FIELDCAT-KEY_SEL = 'X'. "Spalte ausblendbarLD_WA_FIELDCAT-FIX_COLUMN = 'X'. "Spalte fixierenMODIFY GD_FIELDCAT FROM LD_WA_FIELDCAT.WHEN 'MATNR'.COLPOS = COLPOS + 1.LD_WA_FIELDCAT-NO_OUT = SPACE. "ausgebenLD_WA_FIELDCAT-COL_POS = COLPOS.LD_WA_FIELDCAT-KEY = 'X'. "SchluesselspalteLD_WA_FIELDCAT-KEY_SEL = 'X'. "Spalte ausblendbarLD_WA_FIELDCAT-FIX_COLUMN = 'X'. "Spalte fixierenMODIFY GD_FIELDCAT FROM LD_WA_FIELDCAT.WHEN 'BWTAR'.IF BWTAR_EXIST = 'X'.COLPOS = COLPOS + 1.LD_WA_FIELDCAT-NO_OUT = SPACE. "ausgebenLD_WA_FIELDCAT-COL_POS = COLPOS.LD_WA_FIELDCAT-KEY = 'X'. "SchluesselspalteLD_WA_FIELDCAT-KEY_SEL = 'X'. "Spalte ausblendbarLD_WA_FIELDCAT-FIX_COLUMN = 'X'. "Spalte fixierenMODIFY GD_FIELDCAT FROM LD_WA_FIELDCAT.ELSE.LD_WA_FIELDCAT-NO_OUT = 'X'.LD_WA_FIELDCAT-KEY = SPACE.MODIFY GD_FIELDCAT FROM LD_WA_FIELDCATTRANSPORTING NO_OUTKEY.ENDIF.WHEN 'VBELN'.IF VBELN_EXIST = 'X'.COLPOS = COLPOS + 1.LD_WA_FIELDCAT-NO_OUT = SPACE. "ausgebenLD_WA_FIELDCAT-COL_POS = COLPOS.LD_WA_FIELDCAT-KEY = 'X'. "SchluesselspalteLD_WA_FIELDCAT-KEY_SEL = 'X'. "Spalte ausblendbarLD_WA_FIELDCAT-FIX_COLUMN = 'X'. "Spalte fixierenMODIFY GD_FIELDCAT FROM LD_WA_FIELDCAT.ELSE.LD_WA_FIELDCAT-NO_OUT = 'X'.LD_WA_FIELDCAT-KEY = SPACE.MODIFY GD_FIELDCAT FROM LD_WA_FIELDCATTRANSPORTING NO_OUTKEY.ENDIF.WHEN 'POSNR'.IF VBELN_EXIST = 'X'.COLPOS = COLPOS + 1.LD_WA_FIELDCAT-NO_OUT = SPACE. "ausgebenLD_WA_FIELDCAT-COL_POS = COLPOS.LD_WA_FIELDCAT-KEY = 'X'. "SchluesselspalteLD_WA_FIELDCAT-KEY_SEL = 'X'. "Spalte ausblendbarLD_WA_FIELDCAT-FIX_COLUMN = 'X'. "Spalte fixierenMODIFY GD_FIELDCAT FROM LD_WA_FIELDCAT.ELSE.LD_WA_FIELDCAT-NO_OUT = 'X'.LD_WA_FIELDCAT-KEY = SPACE.MODIFY GD_FIELDCAT FROM LD_WA_FIELDCATTRANSPORTING NO_OUTKEY.ENDIF.WHEN 'PSPNR'.IF PSPNR_EXIST = 'X'.COLPOS = COLPOS + 1.LD_WA_FIELDCAT-NO_OUT = SPACE. "ausgebenLD_WA_FIELDCAT-COL_POS = COLPOS.LD_WA_FIELDCAT-KEY = 'X'. "SchluesselspalteLD_WA_FIELDCAT-KEY_SEL = 'X'. "Spalte ausblendbarLD_WA_FIELDCAT-FIX_COLUMN = 'X'. "Spalte fixierenMODIFY GD_FIELDCAT FROM LD_WA_FIELDCAT.ELSE.LD_WA_FIELDCAT-NO_OUT = 'X'.LD_WA_FIELDCAT-KEY = SPACE.MODIFY GD_FIELDCAT FROM LD_WA_FIELDCATTRANSPORTING NO_OUTKEY.ENDIF.WHEN 'MLAST'.COLPOS = COLPOS + 1.LD_WA_FIELDCAT-NO_OUT = SPACE. "ausgebenLD_WA_FIELDCAT-COL_POS = COLPOS.MODIFY GD_FIELDCAT FROM LD_WA_FIELDCAT.WHEN 'FLG_LOCK'.COLPOS = COLPOS + 1.LD_WA_FIELDCAT-NO_OUT = SPACE. "ausgebenLD_WA_FIELDCAT-COL_POS = COLPOS.LD_WA_FIELDCAT-SELTEXT_S = 'Lock Flag'.LD_WA_FIELDCAT-SELTEXT_M = 'Lock Flag'.LD_WA_FIELDCAT-SELTEXT_L = 'Lock Flag'.LD_WA_FIELDCAT-OUTPUTLEN = 9.MODIFY GD_FIELDCAT FROM LD_WA_FIELDCAT.WHEN 'PREV_STATUS'.COLPOS = COLPOS + 1.LD_WA_FIELDCAT-NO_OUT = SPACE. "ausgebenLD_WA_FIELDCAT-COL_POS = COLPOS.LD_WA_FIELDCAT-SELTEXT_S = 'Prev. Status'.LD_WA_FIELDCAT-SELTEXT_M = 'Previous Status'.LD_WA_FIELDCAT-SELTEXT_L = 'Previous Status'.LD_WA_FIELDCAT-OUTPUTLEN = 15.MODIFY GD_FIELDCAT FROM LD_WA_FIELDCAT.WHEN 'STATUS'.COLPOS = COLPOS + 1.LD_WA_FIELDCAT-NO_OUT = SPACE. "ausgebenLD_WA_FIELDCAT-COL_POS = COLPOS.LD_WA_FIELDCAT-SELTEXT_S = 'New Status'.LD_WA_FIELDCAT-SELTEXT_M = 'New Status'.LD_WA_FIELDCAT-SELTEXT_L = 'New Status'.LD_WA_FIELDCAT-OUTPUTLEN = 15.MODIFY GD_FIELDCAT FROM LD_WA_FIELDCAT.WHEN 'CHANGED'.COLPOS = COLPOS + 1.LD_WA_FIELDCAT-NO_OUT = SPACE. "ausgebenLD_WA_FIELDCAT-COL_POS = COLPOS.IF P_TEST IS INITIAL.LD_WA_FIELDCAT-SELTEXT_S = 'Changed'.LD_WA_FIELDCAT-SELTEXT_M = 'Changed'.LD_WA_FIELDCAT-SELTEXT_L = 'Status changed'.ELSE.LD_WA_FIELDCAT-SELTEXT_S = 'poss.'.LD_WA_FIELDCAT-SELTEXT_M = 'Change poss.'.LD_WA_FIELDCAT-SELTEXT_L = 'Change possible'.ENDIF.MODIFY GD_FIELDCAT FROM LD_WA_FIELDCAT.WHEN OTHERS.LD_WA_FIELDCAT-NO_OUT = 'X'.LD_WA_FIELDCAT-KEY = SPACE.MODIFY GD_FIELDCAT FROM LD_WA_FIELDCATTRANSPORTING NO_OUTKEY.ENDCASE.ENDLOOP. ENDFORM. *----------------------------------------------------------------------* * FORM ALV_EVENT_DISPLAY *----------------------------------------------------------------------* FORM alv_display.* Lokale DatenDATA:t_events TYPE slis_t_event, " User-Eventswa_event LIKE LINE OF t_events,s_layout TYPE slis_layout_alv, " Layout der ALV-Tabelleld_callb_prog LIKE sy-repid, " Callback Programmld_cb_status LIKE sy-xform, " Callback Form: Statusld_cb_ucom LIKE sy-xform, " Callback Form: Usercommandld_cb_top LIKE sy-xform. " Callback Form: Top of Page* Layout-AngabenCLEAR s_layout.s_layout-min_linesize = 100. * s_layout-f2code = 'BACK'.* Callback Programm definierenld_callb_prog = sy-repid.* Callback-Routinen definierenld_cb_ucom = 'ALV_CB_XLIST_USER_COMMAND'.ld_cb_top = 'ALV_CB_TOP_OF_PAGE'.* Eventtabelle zusammenstellenREAD TABLE t_eventsWITH KEY name = slis_ev_top_of_pageINTO wa_event.IF sy-subrc NE 0.MOVE ld_cb_top TO wa_event-form.MOVE slis_ev_top_of_page TO wa_event-name.APPEND wa_event TO t_events.ENDIF.s_layout-colwidth_optimize = ' '.ld_callb_prog = sy-repid.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTING * I_INTERFACE_CHECK = ' 'I_CALLBACK_PROGRAM = LD_CALLB_PROG * I_CALLBACK_PF_STATUS_SET = ' ' * I_CALLBACK_USER_COMMAND = ' ' * I_STRUCTURE_NAME =IS_LAYOUT = S_LAYOUTIT_FIELDCAT = GD_FIELDCAT * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' * I_SAVE = ' ' * IS_VARIANT = ' 'IT_EVENTS = T_EVENTS * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER =TABLEST_OUTTAB = GD_TBLEXCEPTIONSPROGRAM_ERROR = 1OTHERS = 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.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF. ENDFORM.*---------------------------------------------------------------------* * FORM alv_cb_top_of_page * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM alv_cb_top_of_page.CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'EXPORTINGit_list_commentary = gd_top_of_list.ENDFORM. *&---------------------------------------------------------------------* *& Form XBEW_SELECTION *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->t_MATNR text * -->t_BWTAR text * -->t_MTART text * -->t_MATKL text * -->t_SPART text * -->t_KALNR_ALL text * -->t_BWKEY-BWKEY text *----------------------------------------------------------------------* FORM XBEW_SELECTION TABLES T_MATNR STRUCTURE R_MATNRT_BWTAR STRUCTURE R_BWTART_VBELN STRUCTURE R_VBELNT_POSNR STRUCTURE R_POSNRT_PSPNR STRUCTURE R_PSPNRT_MTART STRUCTURE R_MTARTT_MATKL STRUCTURE R_MATKLT_SPART STRUCTURE R_SPARTT_KALNR_ALL STRUCTURE T_KALNR_ALLUSING T_BWKEY-BWKEY TYPE BWKEY.DATA: BEGIN OF MBEW_WA,MATNR LIKE MBEW-MATNR,BWKEY LIKE MBEW-BWKEY,BWTAR LIKE MBEW-BWTAR,KALN1 LIKE MBEW-KALN1,END OF MBEW_WA.DATA: BEGIN OF EBEW_WA,MATNR LIKE EBEW-MATNR,BWKEY LIKE EBEW-BWKEY,BWTAR LIKE EBEW-BWTAR,VBELN LIKE EBEW-VBELN,POSNR LIKE EBEW-POSNR,KALN1 LIKE EBEW-KALN1,END OF EBEW_WA.DATA: BEGIN OF QBEW_WA,MATNR LIKE QBEW-MATNR,BWKEY LIKE QBEW-BWKEY,BWTAR LIKE QBEW-BWTAR,PSPNR LIKE QBEW-PSPNR,KALN1 LIKE QBEW-KALN1,END OF QBEW_WA.DATA: CKMLHD_WA LIKE CKMLHD.CLEAR: T_KALNR_ALL.REFRESH: T_KALNR_ALL. * selection of MBEWIF P_MBEW = 'X'.SELECT MBEW~MATNRMBEW~BWKEYMBEW~BWTARMBEW~KALN1INTO MBEW_WAFROM MBEW JOIN MARAON MBEW~MATNR = MARA~MATNRWHERE MBEW~MATNR IN T_MATNRAND MBEW~BWKEY = T_BWKEY-BWKEYAND MBEW~BWTAR IN T_BWTARAND MARA~MTART IN T_MTARTAND MARA~MATKL IN T_MATKLAND MARA~SPART IN T_SPART.CLEAR: T_KALNR_ALL.MOVE-CORRESPONDING MBEW_WA TO T_KALNR_ALL.MOVE: MBEW_WA-KALN1 TO T_KALNR_ALL-KALNR.APPEND T_KALNR_ALL.CLEAR: MBEW_WA. "for next selectENDSELECT.ENDIF. * selection of EBEWIF P_EBEW = 'X'.SELECT EBEW~MATNREBEW~BWKEYEBEW~BWTAREBEW~VBELNEBEW~POSNREBEW~KALN1INTO EBEW_WAFROM EBEW JOIN MARAON EBEW~MATNR = MARA~MATNRWHERE EBEW~MATNR IN T_MATNRAND EBEW~BWKEY = T_BWKEY-BWKEYAND EBEW~BWTAR IN T_BWTARAND EBEW~VBELN IN T_VBELNAND EBEW~POSNR IN T_POSNRAND MARA~MTART IN T_MTARTAND MARA~MATKL IN T_MATKLAND MARA~SPART IN T_SPART.CLEAR: T_KALNR_ALL.MOVE-CORRESPONDING EBEW_WA TO T_KALNR_ALL.MOVE: EBEW_WA-KALN1 TO T_KALNR_ALL-KALNR.APPEND T_KALNR_ALL.CLEAR: EBEW_WA. "for next selectENDSELECT.ENDIF. * selection of QBEWIF P_QBEW = 'X'.SELECT QBEW~MATNRQBEW~BWKEYQBEW~BWTARQBEW~PSPNRQBEW~KALN1INTO QBEW_WAFROM QBEW JOIN MARAON QBEW~MATNR = MARA~MATNRWHERE QBEW~MATNR IN T_MATNRAND QBEW~BWKEY = T_BWKEY-BWKEYAND QBEW~BWTAR IN T_BWTARAND QBEW~PSPNR IN T_PSPNRAND MARA~MTART IN T_MTARTAND MARA~MATKL IN T_MATKLAND MARA~SPART IN T_SPART.CLEAR: T_KALNR_ALL.MOVE-CORRESPONDING QBEW_WA TO T_KALNR_ALL.MOVE: QBEW_WA-KALN1 TO T_KALNR_ALL-KALNR.APPEND T_KALNR_ALL.CLEAR: QBEW_WA. "for next selectENDSELECT.ENDIF.*Sortieren der AusgabetabelleSORT T_KALNR_ALL BY BWKEYMATNRBWTARVBELNPOSNRPSPNR. *Pruefen, ob Ausgabespalten initial.CLEAR: BWTAR_EXIST,VBELN_EXIST,PSPNR_EXIST.LOOP AT T_KALNR_ALL.IF NOT T_KALNR_ALL-BWTAR IS INITIAL.BWTAR_EXIST = 'X'.ENDIF.IF NOT T_KALNR_ALL-VBELN IS INITIAL.VBELN_EXIST = 'X'.ENDIF.IF NOT T_KALNR_ALL-PSPNR IS INITIAL.PSPNR_EXIST = 'X'.ENDIF. * AbbruchkriteriumIF BWTAR_EXIST = 'X' ANDVBELN_EXIST = 'X' ANDPSPNR_EXIST = 'X'.EXIT.ENDIF.ENDLOOP. ENDFORM. " XBEW_SELECTION 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的启动物料帐后不可更改物料价格的处理方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP MM模块相关透明表收集
- 下一篇: 客户信贷应收总额相关