问题名称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.

Other terms

CNACT, MR21, CKME, CK24

Solution

This 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

启动物料帐后不可更改物料价格的处理方法相关推荐

  1. SAP License:启动物料帐后不可更改物料价格的处理方法

    问题名称Issue Title: 物料期间状态不对, 无法在MR21中更新物料价格 问题具体描述Description: 用户需要更新部分物料在200X年1月的标准价格. 这些物料在1月没有发生任何业 ...

  2. SAP 启动物料帐后不可更改物料价格的处理方法

    问题名称Issue Title: 物料期间状态不对, 无法在MR21中更新物料价格 问题具体描述Description: 用户需要更新部分物料在200X年1月的标准价格. 这些物料在1月没有发生任何业 ...

  3. 网络访问:本地账号的共享和安全模式设置身份验证后自动更改其他验证的处理方法 ...

    网络访问:本地账号的共享和安全模式 设置成为"仅来宾-本地用户以来宾身份验证"后自动更改成"经典:本地用户以自己的身份验证"的处理方法 我们为何要修改网络访问: ...

  4. windows xp和windows2003 客户端加入域后无法更改ip网络属性解决方法

    一.环境: 两台虚拟机:一台作为服务器windows2012R2系统安装了AD,一台作为客户端XP系统. 二.问题描述: 客户端成功加入域后,我想更改客户端的IP地址.打开网络连接属性时提示:因为你没 ...

  5. SAP ML 物料分类账详解(含取消激活物料帐方法)

    SAP ML 物料分类账详解(含取消激活物料帐方法) 一.业务背景: 中国会计准则规定,对存货的核算必须采用历史成本法(即实际成本法).如果企业采用计划成本法或者定额成本法进行日常核算的,应当按期结转 ...

  6. co88 sap 实际结算_SAP 物料帐的基本原理

    作者:SAP剑客|编辑 SAP天涯如果企业选用了物料帐作成本核算的方法,物料结算流程是必需的步骤,这也是月结的一部分.在做物料帐结算前,下面的条件一定要符合:1. 物料平衡(MBT)已完成2. 流程订 ...

  7. 打开SAP物料帐期和财务账期

    我们先了解一下如何做物料帐期和财务账期, 物料账期:Tcode MMPV 和 Tcode MMRV & Tcode OMSY (OMSY - Fiscal Year of Current Pe ...

  8. 物料分类帐环境下:物料下一期间标准价的维护及批准发布时点

    在当期物料帐清算结账(CKMI)之前,需要先对下一期间的物料标准价(Standard Price)进行维护(T-Code:CKMPRP),维护完毕后才能进行批准发布(T-Code:CKME). 维护下 ...

  9. SAP发票校验前收货后是否能更改物料价格

    采购单部分收货或者完全收货后,仍然可以更改价格.这是SAP系统的标准设置.这一点的意义究竟何在呢?收完货再改价格,影响到了什么?为什么允许这么做? 先来看看在这种情况下,哪里会受到影响.经过测试发现, ...

最新文章

  1. c实现三角形角度大于一个值_初中数学|高分必备!数学三角形相关知识点梳理汇总...
  2. python学号怎么编写_用python编写学生管理系统
  3. java编程button_以编程方式在Java Swing中单击GUIbutton
  4. dfmea文件_DFMEA和PFMEA的“六步法”其实很不一样
  5. 把数据保存到cook_JavaScript数据存储 Cookie篇
  6. dnf辅助外挂C++源代码
  7. 使用SQLServer2005插入一条数据时返回当前插入数据的ID
  8. 【绝对干货】TEASER前传之QUASAR:基于四元数的存在外点Wahba问题的可证明最优解
  9. android 数据库详解,Android-SQLite数据库操作详解
  10. mysql数据库基础简介_MySQL数据库之MySQL 基础之MySQL简介
  11. Matlab小波工具箱的使用2
  12. Waud.js – 使用HTML5降级处理的Web音频库
  13. spring boot + vue + element-ui全栈开发入门——windows开发环境
  14. wechart image标签
  15. 旅行商问题近似解——NP完全问题
  16. 龙芯电脑手动编译安装gcc9.3编译器
  17. SD-WAN,一场广域网的革命
  18. 2018宁夏网络赛 B Goldbach (米勒拉宾素数测试)
  19. 推荐系统 | (3) 可解释推荐系统---身怀绝技,一招击中用户心理
  20. c语言知识地图,【程序设计论文】C语言程序设计翻转课堂研究(共3546字)

热门文章

  1. 概念模型让产品更简单
  2. 复盘无人业态的三点心得:起于共享单车,止于何?
  3. 【Java深入研究】2、JDK 1.8 LinkedList源码解析
  4. vue学习记录: 遇到过的问题记录
  5. 在ubuntu16安装supervisor 并 启动 .net core.
  6. iOS 7开发快速入门
  7. C#中判断某软件是否已安装
  8. 第十天内容《基础交换十》STP优化案例
  9. 防火墙启动被拒绝解决方案
  10. 如何进行软件测试需求分析