ZCK24-批量发布价格(CK11N,CK24)

REPORT zck24.


  • 事务代码: ZCK24
  • 程序名称: 批量发布价格
  • 程序目的: 批量发布价格
  • 开发人员:
    *(修改日志)--------------------------------------------------------
  • 日志号 修改人 修改时间 修改说明 传输号码

  • 001

======================================================================

  • INCLUDE
    ======================================================================
    INCLUDE zck24_top.
    INCLUDE zck24_f01.

======================================================================

  • AT SELECTION-SCREEN.
    ======================================================================
    AT SELECTION-SCREEN OUTPUT.

======================================================================

  • INITIALIZATION
    ======================================================================
    INITIALIZATION.

PERFORM frm_get_werks."获取默认工厂/公司

======================================================================

  • START-OF-SELECTION.
    ======================================================================
    START-OF-SELECTION.

PERFORM frm_check_bs."必输检查

PERFORM frm_get_data."获取数据

PERFORM frm_alv_fieldcat."修改设置字段属性
PERFORM frm_alv_layout."设置输出格式
PERFORM frm_alv_display."ALV显示

======================================================================

  • END-OF-SELECTION.
    ======================================================================
    END-OF-SELECTION.

&---------------------------------------------------------------------
*& 包含 ZCK24_TOP
&---------------------------------------------------------------------

TABLES: t001, t001w, mbew.

DATA: gt_out_list_vo TYPE STANDARD TABLE OF bapimarkingoutlist WITH HEADER LINE,
gt_return_vo TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE,
gt_out_list_fr TYPE STANDARD TABLE OF bapireleasingoutlist WITH HEADER LINE,
gt_return_fr TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE,
gs_valuation TYPE bapivaluation.

TYPES:BEGIN OF ty_alv,
led TYPE char30,
zbox TYPE c,
bukrs TYPE bukrs,
butxt TYPE butxt,
werks TYPE werks_d,
name1 TYPE name1,
matnr TYPE matnr,
maktx TYPE maktx,
kstel TYPE kstel,
mtart TYPE mtart,
mbrsh TYPE mbrsh,
kst001 TYPE kstel, "成本
feh_sta TYPE keko-feh_sta, "物料状态
ddtext TYPE val_text, "物料状态描述
kbetr TYPE kbetr, "价格
kalnr TYPE ck_kalnr1, "成本估算号 - 产品成本核算
losgr TYPE ck_losgr , "批量产品成本核算
kadat TYPE sy-datum , "成本起始日期
kadky TYPE sy-datum , "成本核算日期
msg TYPE char100,
END OF ty_alv.

DATA:gt_alv TYPE STANDARD TABLE OF ty_alv.
DATA:gs_alv TYPE ty_alv.

RANGES:rs_werks FOR t001w-werks,
rs_bukrs FOR t001-bukrs.

DATA:gv_butxt TYPE butxt.
DATA:gv_name1 TYPE name1.

DATA:gt_fieldcat TYPE lvc_t_fcat, "字段目录内表
gs_fieldcat TYPE lvc_s_fcat, "字段目录工作区
gs_layout TYPE lvc_s_layo. "用于定义ALV表单的相关格式、属性

SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(33) text-002 FOR FIELD p_buper MODIF ID cco.

SELECTION-SCREEN POSITION 35.
PARAMETERS p_buper TYPE ckipricesupdate-p_buper MEMORY ID bup MODIF ID cco.

SELECTION-SCREEN POSITION 39.
PARAMETERS p_gjahr TYPE ckipricesupdate-p_gjahr MEMORY ID gej MODIF ID cco.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP 1.
*PARAMETERS:p_bukrs TYPE t001-bukrs .
SELECT-OPTIONS:s_werks FOR t001w-werks OBLIGATORY.
SELECT-OPTIONS s_matnr FOR mbew-matnr MATCHCODE OBJECT mat1 MODIF ID mat.

SELECTION-SCREEN END OF BLOCK bk1.

DATA:p_test TYPE ckipricesupdate-p_test.

DATA:p_legal TYPE ckipricesupdate-legal VALUE ‘X’, "MODIF ID leg,
p_konzer TYPE ckipricesupdate-konzern , " MODIF ID kon,
p_profct TYPE ckipricesupdate-profitcenter . " MODIF ID pro.

*SELECTION-SCREEN BEGIN OF BLOCK bk2 WITH FRAME TITLE text-003.
*PARAMETERS: p_test TYPE ckipricesupdate-p_test DEFAULT ‘X’.
*SELECTION-SCREEN END OF BLOCK bk2.

&---------------------------------------------------------------------
*& 包含 ZCK24_F01
&---------------------------------------------------------------------
&---------------------------------------------------------------------
*& Form FRM_GET_DATA
&---------------------------------------------------------------------

  •   获取数据
    

----------------------------------------------------------------------
FORM frm_get_data .

SELECT
mara~matnr,
makt~maktx,
mara~mtart,
mara~mbrsh,
marc~werks,
t001k~bukrs,
t001w~name1,
t001~butxt

INTO CORRESPONDING FIELDS OF TABLE @gt_alv
FROM mara
LEFT JOIN makt ON makt~matnr = mara~matnr
INNER JOIN marc ON mara~matnr = marc~matnr
LEFT JOIN t001w ON marc~werks = t001w~werks
LEFT JOIN t001k ON t001w~bwkey = t001k~bwkey
LEFT JOIN t001 ON t001k~bukrs = t001~bukrs
WHERE mara~matnr IN @s_matnr
  AND marc~werks IN @s_werks.

IF gt_alv[] IS INITIAL.
MESSAGE ‘没有符合条件的数据’ TYPE ‘S’ DISPLAY LIKE ‘E’.
LEAVE LIST-PROCESSING.
ENDIF.

ENDFORM.

&---------------------------------------------------------------------
*& Form frm_fieldcat_alv
&---------------------------------------------------------------------

  •   设置ALV字段属性
    

----------------------------------------------------------------------
FORM frm_alv_fieldcat .

REFRESH gt_fieldcat.
DEFINE init_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-coltext = &2.
gs_fieldcat-datatype = &3.
gs_fieldcat-ref_table = &4.
gs_fieldcat-ref_field = &5.
gs_fieldcat-CHECKBOX = &6.
gs_fieldcat-ICON = &7.
gs_fieldcat-EDIT = &8.
gs_fieldcat-NO_ZERO = &9.
APPEND gs_fieldcat TO gt_fieldcat.
END-OF-DEFINITION.

init_fieldcat ‘LED’ ‘指示灯’ ‘’ ‘’ ‘’ ‘’ ‘X’ ‘’ ‘’.
init_fieldcat ‘ZBOX’ ‘选择’ ‘’ ‘’ ‘’ ‘X’ ‘’ ‘X’ ‘’.
init_fieldcat ‘BUKRS’ ‘公司代码’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘BUTXT’ ‘公司代码描述’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘WERKS’ ‘工厂代码’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘NAME1’ ‘工厂代码描述’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘MATNR’ ‘物料编码’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘X’ .
init_fieldcat ‘MAKTX’ ‘物料编码描述’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .

init_fieldcat ‘KST001’ ‘成本’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘FEH_STA’ ‘物料状态’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘DDTEXT’ ‘物料状态描述’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘KBETR’ ‘采购信息记录价格’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘KALNR’ ‘成本估算号’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .

  • INIT_FIELDCAT ‘LOSGR’ ‘成本估算号’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .
    init_fieldcat ‘KADKY’ ‘成本核算日期’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .

init_fieldcat ‘MSG’ ‘消息’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .

ENDFORM.

&---------------------------------------------------------------------
*& Form frm_layout_alv
&---------------------------------------------------------------------
*& 设置ALV输出格式
&---------------------------------------------------------------------
FORM frm_alv_layout .

CLEAR gs_layout.

gs_layout-zebra = ‘X’ . " 使ALV界面呈现颜色交替
gs_layout-sel_mode = ‘D’ . " 选择模式,"A"在最左端有选择按钮
gs_layout-cwidth_opt = ‘X’ . " 自动优化列宽

ENDFORM.

&---------------------------------------------------------------------
*& Form frm_alv_display
&---------------------------------------------------------------------
*& ALV显示
&---------------------------------------------------------------------
FORM frm_alv_display .

  • DATA: i_grid_settings TYPE lvc_s_glay.
    DATA ls_title TYPE lvc_title.
    DESCRIBE TABLE gt_alv LINES DATA(li_lines).
    ls_title = ‘条目数:’ && li_lines.

  • i_grid_settings-edt_cll_cb = ‘X’."ALV 控制: 退出可编辑单元格时回调

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
EXPORTING
i_save = ‘A’
i_callback_program = sy-repid "当前程序
is_layout_lvc = gs_layout “界面格式”
it_fieldcat_lvc = gt_fieldcat “字段属性”
i_callback_pf_status_set = ‘FRM_SET_PF_STATUS’ "状态
i_callback_user_command = ‘FRM_USER_COMMAND_ALV’ "控制指令

  • it_event_exit            = gt_event_exit
    i_grid_title             = ls_title
    
  • i_grid_settings          = i_grid_settings
    
    TABLES
    t_outtab = gt_alv
    EXCEPTIONS
    program_error = 1
    OTHERS = 2.
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE ‘S’ NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE ‘E’.
    LEAVE LIST-PROCESSING.
    ENDIF.

ENDFORM.

&---------------------------------------------------------------------
*& Form frm_set_pf_status
&---------------------------------------------------------------------

  •   ALV状态
    

----------------------------------------------------------------------
FORM frm_set_pf_status USING extab TYPE slis_t_extab.
SET PF-STATUS ‘ZCK24_STATUS’. "EXCLUDING FCODE.

  • SET TITLEBAR ‘XXXXX’.
    ENDFORM. "frm_set_pf_status

&---------------------------------------------------------------------
*& Form frm_user_command_alv
&---------------------------------------------------------------------

  •   ALV按钮功能
    

----------------------------------------------------------------------
FORM frm_user_command_alv USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.

开始******** 这段代码加上之后,才能对数据进行实时更新
DATA: lr_grid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.
rs_selfield-refresh = ‘X’.
rs_selfield-col_stable = ‘X’.
rs_selfield-row_stable = ‘X’.
结束******** 这段代码加上之后,才能对数据进行实时更新
CASE r_ucomm.
WHEN ‘&ZALL’.
LOOP AT gt_alv INTO gs_alv WHERE led <> icon_led_red.
gs_alv-zbox = ‘X’.
MODIFY gt_alv FROM gs_alv.
ENDLOOP.

WHEN '&ZSAL'.
  LOOP AT gt_alv INTO gs_alv WHERE led <> icon_led_red.
    gs_alv-zbox = ''.
    MODIFY gt_alv FROM gs_alv.
  ENDLOOP.

WHEN 'ZFB'.
  CLEAR p_test.
  PERFORM frm_ck24_tb."价格发布

  PERFORM frm_get_keph."发布成功后获取相关数据

WHEN 'ZCS'.
  p_test = 'X'.
  PERFORM frm_ck24_tb."模拟价格发布

  PERFORM frm_get_keph."发布成功后获取相关数据

WHEN '&IC1'.
  READ TABLE gt_alv INTO gs_alv INDEX rs_selfield-tabindex.
  IF sy-subrc = 0.
    IF gs_alv-led = icon_led_green
      OR gs_alv-led IS INITIAL.
      SET PARAMETER ID 'MAT' FIELD gs_alv-matnr. "指参数ID
      SET PARAMETER ID 'WRK' FIELD gs_alv-werks. "指参数ID
      SET PARAMETER ID 'KRT' FIELD 'ZPC1'. "指参数ID
      SET PARAMETER ID 'VSN' FIELD '01'. "指参数ID
      SET PARAMETER ID 'KAD' FIELD sy-datum. "指参数ID
      CALL TRANSACTION 'CK13N'AND SKIP FIRST SCREEN. "调用其它事务
    ENDIF.
  ENDIF.

ENDCASE.

ENDFORM. "frm_user_command_alv
&---------------------------------------------------------------------
*& Form FRM_CHECK_BS
&---------------------------------------------------------------------

  •   必输检查
    

----------------------------------------------------------------------
FORM frm_check_bs .

  • P_KONZER 组估值
  • P_LEGAL 法定评估
  • P_PROFCT 利润中心评估

p_legal = ‘X’.

CLEAR:p_konzer,
p_profct.

ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_GET_WERKS
&---------------------------------------------------------------------

  •   获取默认工厂/公司
    

----------------------------------------------------------------------
FORM frm_get_werks .

  • "获取默认工厂

  • SELECT SINGLE parva

  • INTO p_werks

  • FROM usr05

  • WHERE bname = sy-uname

  • AND parid = ‘WRK’.

  • "获取默认公司

  • SELECT SINGLE

  • bukrs

  • INTO p_bukrs

  • FROM t001k

  • WHERE bwkey = p_werks.

ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_CK24_TB
&---------------------------------------------------------------------

  •   价格发布
    

----------------------------------------------------------------------
FORM frm_ck24_tb .

IF gt_alv[] IS NOT INITIAL.
SELECT
kalnr,
matnr,
werks,
losgr,
kadky,
kadat,
feh_sta
INTO TABLE @DATA(lt_keko)
FROM keko
FOR ALL ENTRIES IN @gt_alv
WHERE matnr = @gt_alv-matnr
AND werks = @gt_alv-werks
AND poper = @p_buper
AND bdatj = @p_gjahr
.
SORT lt_keko BY matnr werks.
ENDIF.

LOOP AT gt_alv INTO gs_alv
WHERE zbox = 'X’AND led <> icon_led_red.

CLEAR gs_alv-msg.

REFRESH rs_werks.
rs_werks-sign = 'I'.
rs_werks-option = 'EQ'.
rs_werks-low = gs_alv-werks.
APPEND rs_werks.

REFRESH rs_bukrs.
rs_bukrs-sign = 'I'.
rs_bukrs-option = 'EQ'.
rs_bukrs-low = gs_alv-bukrs.
APPEND rs_bukrs.

READ TABLE lt_keko INTO DATA(lw_keko) WITH KEY matnr = gs_alv-matnr
                                               werks = gs_alv-werks
                                               BINARY SEARCH.
IF sy-subrc <> 0.
  CLEAR lw_keko.

ELSE.
  gs_alv-feh_sta = lw_keko-feh_sta.
  gs_alv-kalnr = lw_keko-kalnr.
  gs_alv-losgr = lw_keko-losgr.
  gs_alv-kadky = lw_keko-kadky.
  gs_alv-kadat = lw_keko-kadat.

ENDIF.

IF lw_keko-feh_sta = '' OR
   lw_keko-feh_sta = 'ER' OR"已打开
   lw_keko-feh_sta = 'SE' OR"选择无错误
   lw_keko-feh_sta = 'SF' OR"选择有错误
   lw_keko-feh_sta = 'KF' "有错的成本核算
  .

  PERFORM frm_ck11n.      "CK11N创建物料成本评估
  PERFORM frm_ck24_ka.
  PERFORM frm_ck24_v0.

ENDIF.

IF lw_keko-feh_sta = 'KA' ."没错的成本核算
  PERFORM frm_ck24_ka.
  PERFORM frm_ck24_v0.
ENDIF.

IF lw_keko-feh_sta = 'VO' ."标记无错
  PERFORM frm_ck24_v0.
ENDIF.

IF gs_alv-msg IS INITIAL.

  IF p_test IS NOT INITIAL.
    gs_alv-msg = '模拟发布成功'.
  ELSE.
    gs_alv-msg = '发布成功'.

    "清空物料工厂特定的物料状态
    PERFORM frm_bapi_material_savedata.

  ENDIF.
ELSE.
  IF p_test IS NOT INITIAL.
  •    gs_alv-msg = '模拟发布成功'.
    ELSE.
      gs_alv-msg = '模拟价格发布:' && gs_alv-msg.
    ENDIF.
    gs_alv-led = icon_led_red.
    

    ENDIF.

    MODIFY gt_alv FROM gs_alv.
    ENDLOOP.

ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_CK11N
&---------------------------------------------------------------------

  •   CK11N创建物料成本评估
    

----------------------------------------------------------------------
FORM frm_ck11n .

CALL FUNCTION ‘CK_F_MATERIAL_CALC’
EXPORTING
klvar = ‘ZPC1’ "iv_klvar 成本核算变式
matnr = gs_alv-matnr
werks = gs_alv-werks
tvers = ‘01’ "iv_tvers 成本核算版本
kadat = sy-datum

  • kadky          = sy-datum
    bwdat          = sy-datum
    s_dunkel       = 'X'
    s_update       = 'S'
    s_no_commit    = ''
    s_sngl_lock    = ''
    

    EXCEPTIONS
    wrong_call = 1
    keph_not_found = 2
    locked = 3.
    IF sy-msgty = ‘E’.
    gs_alv-led = icon_led_red.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    INTO gs_alv-msg WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    gs_alv-msg = ‘CK11N创建物料成本评估执行失败:’&& gs_alv-msg ." && .
    MODIFY gt_alv FROM gs_alv.
    RETURN.
    ENDIF.

ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_CK24_V0
&---------------------------------------------------------------------

  •   标记无错
    

----------------------------------------------------------------------
FORM frm_ck24_v0 .

REFRESH gt_return_fr.
REFRESH gt_out_list_fr.

CALL FUNCTION ‘BAPI_COSTESTIMATE_RELEASING’
EXPORTING
posting_year = p_gjahr
posting_period = p_buper

  • COSTINGRUN     =
    
  • COSTINGRUN_DATE             =
    
  • NO_OF_MAT_IN_POST_DOC       = 400
    testrun        = p_test
    

    TABLES
    return = gt_return_fr
    out_list = gt_out_list_fr
    in_material = s_matnr
    in_plant = rs_werks
    in_comp_code = rs_bukrs.

    LOOP AT gt_return_fr WHERE type <> ‘S’.
    IF gs_alv-msg IS INITIAL.
    gs_alv-msg = gt_return_vo-message.
    ELSE.
    gs_alv-msg = gs_alv-msg && ‘/’ && gt_return_vo-message.
    ENDIF.
    ENDLOOP.

    IF p_test EQ ‘X’.
    CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’ .

    ELSE.

    IF gs_alv-msg IS INITIAL.
    CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
    EXPORTING
    wait = ‘X’.
    ELSE.
    CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’ .

    ENDIF.

    ENDIF.

ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_CK24_KA
&---------------------------------------------------------------------

  •   没错的成本核算
    

----------------------------------------------------------------------
FORM frm_ck24_ka .

"CK24 价格更新-标准价
CLEAR gs_valuation.
REFRESH gt_return_vo.
REFRESH gt_out_list_vo.

gs_valuation-legal = p_legal.
gs_valuation-group = p_konzer.
gs_valuation-profitcenter = p_profct.

CALL FUNCTION ‘BAPI_COSTESTIMATE_MARKING’
EXPORTING
posting_year = p_gjahr
posting_period = p_buper
valuation_view = gs_valuation

  • COSTINGRUN     =
    
  • COSTINGRUN_DATE       =
    testrun        = p_test
    

    TABLES
    return = gt_return_vo
    out_list = gt_out_list_vo
    in_material = s_matnr
    in_plant = rs_werks
    in_comp_code = rs_bukrs.

    LOOP AT gt_return_vo WHERE type = ‘A’
    OR type = ‘E’.
    IF gs_alv-msg IS INITIAL.
    gs_alv-msg = gt_return_vo-message.
    ELSE.
    gs_alv-msg = gs_alv-msg && ‘/’ && gt_return_vo-message.
    ENDIF.
    ENDLOOP.

    IF p_test EQ ‘X’.
    CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’ .

    ELSE.

    IF gs_alv-msg IS INITIAL.
    CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
    EXPORTING
    wait = ‘X’.
    ELSE.
    CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’ .

    ENDIF.

    ENDIF.

ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_BAPI_MATERIAL_SAVEDATA
&---------------------------------------------------------------------

  •   清空物料工厂特定的物料状态
    

----------------------------------------------------------------------
FORM frm_bapi_material_savedata .

" BAPI参数
DATA: headdata TYPE bapimathead,
clientdata TYPE bapi_mara,
clientdatax TYPE bapi_marax,
plantdata TYPE bapi_marc,
plantdatax TYPE bapi_marcx,
forecastparameters TYPE bapi_mpop,
forecastparametersx TYPE bapi_mpopx,
planningdata TYPE bapi_mpgd,
planningdatax TYPE bapi_mpgdx,
storagelocationdata TYPE bapi_mard,
storagelocationdatax TYPE bapi_mardx,
warehousenumberdata TYPE bapi_mlgn,
warehousenumberdatax TYPE bapi_mlgnx,
salesdata TYPE bapi_mvke,
salesdatax TYPE bapi_mvkex,
storagetypedata TYPE bapi_mlgt,
storagetypedatax TYPE bapi_mlgtx,
valuationdata TYPE bapi_mbew,
valuationdatax TYPE bapi_mbewx,
return TYPE bapiret2,
materialdescription TYPE TABLE OF bapi_makt WITH HEADER LINE,
taxclassifications TYPE TABLE OF bapi_mlan WITH HEADER LINE,
materiallongtext TYPE TABLE OF bapi_mltx WITH HEADER LINE,
returnmessages TYPE TABLE OF bapi_matreturn2,
unitsofmeasure TYPE TABLE OF bapi_marm WITH HEADER LINE,
unitsofmeasurex TYPE TABLE OF bapi_marmx WITH HEADER LINE.

"清空內表、工作区
CLEAR headdata.
CLEAR clientdata.
CLEAR clientdatax.
CLEAR plantdata.
CLEAR plantdatax.
CLEAR salesdata.
CLEAR salesdatax.
CLEAR warehousenumberdata.
CLEAR warehousenumberdatax.
CLEAR storagelocationdata.
CLEAR storagelocationdatax.
CLEAR valuationdata.
CLEAR valuationdatax.
CLEAR materialdescription.
REFRESH materialdescription.
CLEAR taxclassifications.
REFRESH taxclassifications.
CLEAR materiallongtext.
REFRESH materiallongtext.
CLEAR unitsofmeasure.
REFRESH unitsofmeasure.


headdata-material = gs_alv-matnr."物料
headdata-ind_sector = gs_alv-mbrsh."行业领域
headdata-matl_type = gs_alv-mtart."物料类型
headdata-cost_view = ‘X’."会计视图

"物料工厂特定的物料状态
plantdata-plant = gs_alv-werks.
plantdatax-plant = gs_alv-werks.
plantdata-pur_status = ‘’.
plantdatax-pur_status = ‘X’.

CALL FUNCTION ‘BAPI_MATERIAL_SAVEDATA’
EXPORTING
headdata = headdata

  • clientdata = clientdata
    
  • clientdatax          = clientdatax
    plantdata  = plantdata
    plantdatax = plantdatax
    
  • salesdata  = salesdata
    
  • salesdatax = salesdatax
    
  • warehousenumberdata  = warehousenumberdata
    
  • warehousenumberdatax = warehousenumberdatax
    
  • storagelocationdata  = storagelocationdata
    
  • storagelocationdatax = storagelocationdatax
    
  • valuationdata        = valuationdata
    
  • valuationdatax       = valuationdatax
    
  • storagetypedata      = storagetypedata
    
  • storagetypedatax     = storagetypedatax
    

    IMPORTING
    return = return

  • TABLES

  • materialdescription  = materialdescription
    
  • unitsofmeasure       = unitsofmeasure
    
  • unitsofmeasurex      = unitsofmeasurex
    
  • INTERNATIONALARTNOS  =
    
  • materiallongtext     = materiallongtext
    
  • taxclassifications   = taxclassifications
    
  • RETURNMESSAGES       = RETURNMESSAGES
    
  • prtdata    = prtdata
    
  • prtdatax   = prtdatax
    
  • extensionin          = extensionins
    
  • extensioninx         = extensioninx
    
  • NFMCHARGEWEIGHTS     =
    
  • NFMCHARGEWEIGHTSX    =
    
  • NFMSTRUCTURALWEIGHTS =
    
  • NFMSTRUCTURALWEIGHTSX =
    

    .

    IF return-type = ‘E’.
    CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.

    gs_alv-msg = gs_alv-msg && ‘,物料工厂特定的物料状态清除失败:’ && return-message.

    gs_alv-led = icon_led_red.

    ELSE.
    CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
    EXPORTING
    wait = ‘X’.

    gs_alv-msg = gs_alv-msg && ‘,物料工厂特定的物料状态清除成功’.

    gs_alv-led = icon_led_green.

    ENDIF.

ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_GET_KEPH
&---------------------------------------------------------------------

  •   发布成功后获取相关数据
    

----------------------------------------------------------------------
FORM frm_get_keph .

IF gt_alv[] IS NOT INITIAL.

SELECT
  kalnr,
  kst001,
  kst003,
  kst005,
  kst007,
  kst009
  FROM keph
  INTO TABLE @DATA(lt_keph)
  FOR ALL ENTRIES IN @gt_alv
  WHERE kkzst = '' AND
        kalnr = @gt_alv-kalnr AND
        kadky = @gt_alv-kadky.
SORT lt_keph BY kalnr.

"通过系统标准表A017给内表IT_ME13相应的字段赋值
SELECT
  • a017~lifnr,
    a017~matnr,
    a017~werks,
  • a017~esokz,
  • a017~ekorg,
  • a017~datab,
  • a017~datbi,
  • a017~knumh,
    konp~kbetr,
    konp~kpein
    INTO TABLE @DATA(lt_me13)
    FROM a017
    INNER JOIN konp ON a017~knumh = konp~knumh
    FOR ALL ENTRIES IN @gt_alv
    WHERE konp~loevm_ko = ‘’
    AND a017~matnr = @gt_alv-matnr
    AND a017~datab <= @gt_alv-kadat
    AND a017~datbi >= @gt_alv-kadat
    AND a017~werks = @gt_alv-werks.
SORT lt_me13 BY matnr werks kbetr.
DELETE ADJACENT DUPLICATES FROM lt_me13 COMPARING matnr werks.

SELECT *
FROM dd07v
INTO TABLE @DATA(lt_dd07v)
WHERE domname = 'CK_STATUS'
AND ddlanguage = '1'.

SORT lt_dd07v BY domvalue_l.

IF sy-ucomm = 'ZFB'.
  SELECT
  kalnr,
  matnr,
  werks,
  losgr,
  kadky,
  feh_sta
  INTO TABLE @DATA(lt_keko)
        FROM keko
        FOR ALL ENTRIES IN @gt_alv
        WHERE matnr = @gt_alv-matnr
        AND werks = @gt_alv-werks
        AND poper = @p_buper
        AND bdatj = @p_gjahr
        .
  SORT lt_keko BY matnr werks.
ENDIF.

ENDIF.

LOOP AT gt_alv INTO gs_alv WHERE zbox = ‘X’.

READ TABLE lt_keph INTO DATA(ls_keph) WITH KEY kalnr = gs_alv-kalnr BINARY SEARCH.
IF sy-subrc = 0.
  IF gs_alv-losgr <> 0.
    gs_alv-kst001 = ( ls_keph-kst001 + ls_keph-kst003 + ls_keph-kst005 + ls_keph-kst007 + ls_keph-kst009 ) / gs_alv-losgr.
  ENDIF.
ENDIF.

READ TABLE lt_me13 INTO DATA(ls_me13) WITH KEY matnr = gs_alv-matnr
                                               werks  = gs_alv-werks
                                               BINARY SEARCH.
IF sy-subrc = 0.
  gs_alv-kbetr = ls_me13-kbetr / ls_me13-kpein.
ENDIF.

READ TABLE lt_dd07v INTO DATA(ls_dd07v) WITH KEY domvalue_l = gs_alv-feh_sta BINARY SEARCH.
IF sy-subrc = 0.
  gs_alv-ddtext = ls_dd07v-ddtext.
ENDIF.

IF sy-ucomm = 'ZFB'.
  READ TABLE lt_keko INTO DATA(lw_keko) WITH KEY matnr = gs_alv-matnr
                                                 werks = gs_alv-werks
                                                 BINARY SEARCH.
  IF lw_keko-feh_sta <> 'FR'.
    gs_alv-led = icon_led_red.
    gs_alv-msg = '发布价格错误,请手工发布'.
  ENDIF.
  CLEAR lw_keko.
ENDIF.

MODIFY gt_alv FROM gs_alv.

ENDLOOP.

ENDFORM.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放弃幻想_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值