CO02工单组件,新增/删除/修改
REPORT zpp153.
- 事务代码: ZPP153-整散车生产订单自动调整
- 程序名称:ZPP153-整散车生产订单自动调整
- 程序目的:ZPP153-整散车生产订单自动调整
- 开发人员:
*(修改日志)-------------------------------------------------------- - 日志号 修改人 修改时间 修改说明 传输号码
-
- 001
======================================================================
- INCLUDE
======================================================================
INCLUDE zpp153_top.
INCLUDE zpp153_f01.
======================================================================
- AT SELECTION-SCREEN.
======================================================================
AT SELECTION-SCREEN OUTPUT.
======================================================================
- INITIALIZATION
======================================================================
INITIALIZATION.
======================================================================
- START-OF-SELECTION.
======================================================================
START-OF-SELECTION.
PERFORM frm_get_data."获取数据
PERFORM frm_alv_fieldcat."修改设置字段属性
PERFORM frm_alv_layout."设置输出格式
PERFORM frm_alv_display."ALV显示
======================================================================
- END-OF-SELECTION.
======================================================================
END-OF-SELECTION.
&---------------------------------------------------------------------
*& 包含 ZPP153_TOP
&---------------------------------------------------------------------
TABLES:aufk,afko,afpo.
TYPES:BEGIN OF ty_alv,
box TYPE c, "选择
led TYPE string, "指示灯
werks TYPE aufk-werks, "工厂
aufnr TYPE aufk-aufnr, "生产订单
gstrp TYPE afko-gstrp, "开始日期
gamng TYPE afko-gamng, "生产数量
fevor TYPE afko-fevor, "生产线
matnr TYPE afpo-matnr, "物料号
maktx TYPE makt-maktx, "描述
matnr_ct TYPE afpo-matnr, "成套件料号
maktx_ct TYPE makt-maktx, "描述
ylgort TYPE afpo-lgort, "原入库库位
lgort TYPE afpo-lgort, "新入库库位
msg TYPE char100, "消息
END OF ty_alv.
DATA:gt_alv TYPE STANDARD TABLE OF ty_alv.
DATA:gs_alv TYPE ty_alv.
TYPES:BEGIN OF ty_stb.
INCLUDE TYPE stpox.
TYPES:aufnr TYPE afpo-aufnr.
TYPES:labor TYPE mara-labor.
TYPES:END OF ty_stb.
DATA:gt_stb TYPE TABLE OF ty_stb,
gs_stb TYPE ty_stb,
gt_matcat TYPE TABLE OF cscmat.
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 b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:s_werks FOR aufk-werks OBLIGATORY, "工厂
s_matnr FOR afpo-matnr, "物料号
s_aufnr FOR aufk-aufnr, "生产订单
s_gstrp FOR afko-gstrp OBLIGATORY. "开始日期
PARAMETERS:
p_lgort TYPE afpo-lgort DEFAULT ‘S049’ OBLIGATORY, "入库库位
p_matct TYPE afpo-matnr. "成套件料号
SELECTION-SCREEN END OF BLOCK b1.
&---------------------------------------------------------------------
*& 包含 ZPP153_F01
&---------------------------------------------------------------------
&---------------------------------------------------------------------
*& 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-inttype = &6.
gs_fieldcat-ICON = &7.
gs_fieldcat-EDIT = &8.
gs_fieldcat-CHECKBOX = &9.
APPEND gs_fieldcat TO gt_fieldcat.
END-OF-DEFINITION.
init_fieldcat ‘BOX’ ‘选择’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘X’ ‘X’.
init_fieldcat ‘LED’ ‘指示灯’ ‘’ ‘’ ‘’ ‘’ ‘X’ ‘’ ‘’.
init_fieldcat ‘MSG’ ‘消息’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat 'WERKS ’ ‘工厂’ ‘’ ‘AUFK’ ‘WERKS’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat 'AUFNR ’ ‘生产订单’ ‘’ ‘AFKO’ ‘AUFNR’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat 'GSTRP ’ ‘开始日期’ ‘’ ‘AFKO’ ‘GSTRP’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat 'GAMNG ’ ‘生产数量’ ‘’ ‘AFKO’ ‘GAMNG’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat 'FEVOR ’ ‘生产线’ ‘’ ‘AFPO’ ‘FEVOR’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat 'MATNR ’ ‘物料号’ ‘’ ‘MAKT’ ‘MATNR’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat 'MAKTX ’ ‘物料号描述’ ‘’ ‘AFPO’ ‘MAKTX’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘MATNR_CT’ ‘成套件料号’ ‘’ ‘MAKT’ ‘MATNR’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘MAKTX_CT’ ‘成套件料号描述’ ‘’ ‘AFPO’ ‘MAKTX’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat 'YLGORT ’ ‘原入库库位’ ‘’ ‘AFPO’ ‘LGORT’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat 'LGORT ’ ‘新入库库位’ ‘’ ‘AFPO’ ‘LGORT’ ‘’ ‘’ ‘’ ‘’ .
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
-
TABLESi_grid_settings = i_grid_settings
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 ‘ZPP153_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 'ZZC'."整车PERFORM frm_zzc_xz."整车新增BOM组件WHEN 'ZSC'."散车PERFORM frm_zsc_sc."散车删除BOM组件WHEN 'ZALL'."全选PERFORM frm_all_data.WHEN 'ZSAL'."取消全选PERFORM frm_sal_data.WHEN '&IC1'."双击显示工单PERFORM frm_dis_co03 USING rs_selfield.WHEN OTHERS.
ENDCASE.
- DATA ls_title TYPE lvc_title.
- DESCRIBE TABLE gt_alv LINES DATA(li_lines).
- ls_title = ‘条目数:’ && li_lines.
- CALL METHOD lr_grid->set_gridtitle
- EXPORTING
-
i_gridtitle = ls_title.
ENDFORM. "frm_user_command_alv
&---------------------------------------------------------------------
*& Form FRM_GET_DATA
&---------------------------------------------------------------------
-
获取数据
----------------------------------------------------------------------
FORM frm_get_data .
DATA:lt_alv TYPE STANDARD TABLE OF ty_alv.
DATA:lt_stb TYPE TABLE OF stpox,
lt_matcat TYPE TABLE OF cscmat.
REFRESH gt_alv.
REFRESH gt_stb.
SELECT
aufk~werks,
afko~aufnr,
afko~fevor,
afko~gamng,
afko~gstrp,
afpo~matnr,
afpo~lgort AS ylgort,
makt~maktx
INTO CORRESPONDING FIELDS OF TABLE @lt_alv
FROM afko
INNER JOIN afpo ON afpo~aufnr = afko~aufnr
INNER JOIN aufk ON aufk~aufnr = afko~aufnr
LEFT JOIN makt ON afpo~matnr = makt~matnr
WHERE aufk~loekz = ''AND
( aufk~auart = 'YP01’OR
aufk~auart = ‘YP10’) AND
-
afpo~lgort = p_lgort ANDafko~gstrp IN @s_gstrp ANDaufk~werks IN @s_werks ANDaufk~aufnr IN @s_aufnr ANDafpo~matnr IN @s_matnr ANDmakt~spras = '1'.
IF lt_alv[] IS INITIAL.
MESSAGE ‘没有符合条件的数据’ TYPE ‘S’ DISPLAY LIKE ‘E’.
LEAVE LIST-PROCESSING.
ENDIF.LOOP AT lt_alv INTO gs_alv.
REFRESH lt_stb.
CALL FUNCTION ‘CS_BOM_EXPL_MAT_V2’
EXPORTING
capid = ‘PP01’
datuv = gs_alv-gstrp
mktls = ‘X’
mehrs = ‘X’
mtnrv = gs_alv-matnr
stlan = ‘1’
stlal = ‘’
werks = gs_alv-werks -
IMPORTING
-
TOPMAT = TOPMAT
-
DSTST = DSTST TABLESstb = lt_stbmatcat = lt_matcat EXCEPTIONSalt_not_found = 1call_invalid = 2material_not_found = 3missing_authorization = 4no_bom_found = 5no_plant_data = 6no_suitable_bom_found = 7conversion_error = 8OTHERS = 9.
IF sy-subrc <> 0.
-
Implement suitable error handling here
ENDIF.LOOP AT lt_stb INTO DATA(ls_stb).
CLEAR gs_stb. MOVE-CORRESPONDING ls_stb TO gs_stb. gs_stb-aufnr = gs_alv-aufnr. APPEND gs_stb TO gt_stb.
ENDLOOP.
gs_alv-lgort = p_lgort.
gs_alv-box = ‘X’.
APPEND gs_alv TO gt_alv.
ENDLOOP.SELECT
matnr,
labor
INTO TABLE @DATA(lt_mara)
FROM mara
FOR ALL ENTRIES IN @gt_stb
WHERE labor = ‘001’
AND matnr = @gt_stb-idnrk.
SORT lt_mara BY matnr.SORT gt_alv BY aufnr.
LOOP AT gt_stb INTO gs_stb.
READ TABLE lt_mara INTO DATA(ls_mara) WITH KEY matnr = gs_stb-idnrk BINARY SEARCH.
IF sy-subrc = 0.READ TABLE gt_alv INTO gs_alv WITH KEY aufnr = gs_stb-aufnr BINARY SEARCH. IF sy-subrc = 0.gs_alv-matnr_ct = ls_mara-matnr.MODIFY gt_alv FROM gs_alv TRANSPORTING matnr_ct WHERE aufnr = gs_stb-aufnr. ENDIF.
ENDIF.
MODIFY gt_stb FROM gs_stb.
CLEAR gs_stb.
ENDLOOP.SORT gt_stb BY aufnr.
IF gt_alv[] IS NOT INITIAL.
SELECT
matnr,
maktx
FROM makt
INTO TABLE @DATA(lt_matk)
FOR ALL ENTRIES IN @gt_alv
WHERE spras = ‘1’
AND matnr = @gt_alv-matnr_ct.
SORT lt_matk BY matnr.LOOP AT gt_alv INTO gs_alv.
READ TABLE lt_matk INTO DATA(ls_matk) WITH KEY matnr = gs_alv-matnr_ct BINARY SEARCH.
IF sy-subrc = 0.
gs_alv-maktx_ct = ls_matk-maktx.
ENDIF.
MODIFY gt_alv FROM gs_alv.
ENDLOOP.ENDIF.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_ZZC_XZ
&---------------------------------------------------------------------
-
整车新增BOM组件
----------------------------------------------------------------------
FORM frm_zzc_xz .
"新增组件
DATA: ls_storage_location TYPE coxt_s_storage_location,
ls_storage_locationx TYPE coxt_s_storage_locationx,
ls_requ_quan TYPE coxt_s_quantity,
lv_operation TYPE co_aplzl,
-
lv_batch TYPE coxt_batch,
-
lv_batchx TYPE coxt_batchx,
-
lv_postp TYPE postp,
-
lv_sequence TYPE plnfolge,
-
lv_material TYPE matnr,lv_positionno TYPE positionno,lv_numc TYPE numc4.
"重新刷新订单行号使用
TYPES: BEGIN OF ty_resb_bt.
INCLUDE TYPE resbb.
TYPES: indold TYPE syst_tabix.
TYPES: no_req_upd TYPE syst_datar.
TYPES: END OF ty_resb_bt.
TYPES tt_resb_bt TYPE TABLE OF ty_resb_bt.
FIELD-SYMBOLS: <ft_resb_bt> TYPE tt_resb_bt,
<fs_resb_bt> TYPE ty_resb_bt.DATA:et_bapireturn TYPE coxt_bapireturn OCCURS 0.
DATA:lt_resb LIKE TABLE OF resb WITH HEADER LINE.
DATA:ls_return TYPE bapiret2.
DATA lv_error TYPE c.LOOP AT gt_alv INTO gs_alv WHERE box = ‘X’.
PERFORM frm_change_logrt."修改工厂库位
IF gs_alv-led <> icon_led_red.
REFRESH lt_resb.READ TABLE gt_stb INTO gs_stb WITH KEY aufnr = gs_alv-aufnridnrk = gs_alv-matnr_ctBINARY SEARCH. IF sy-subrc = 0."新增需要的组件LOOP AT gt_stb INTO DATA(ls_stb) WHERE vwegx = gs_stb-wegxx.SELECT SINGLErsnum,rspos,matnr,werks,enmng,meinsINTO @DATA(lss_resb)FROM resbWHERE aufnr EQ @gs_alv-aufnrAND matnr EQ @ls_stb-idnrkAND xloek NE 'X'.IF sy-subrc <> 0.CLEAR lt_resb.lt_resb-matnr = ls_stb-idnrk.lt_resb-bdmng = ls_stb-menge * gs_alv-gamng.lt_resb-enmng = ls_stb-menge * gs_alv-gamng.lt_resb-meins = ls_stb-mmein.lt_resb-werks = ls_stb-werks.APPEND lt_resb.ENDIF.ENDLOOP. ENDIF.LOOP AT lt_resb.CLEAR ls_requ_quan.CLEAR lv_operation.CLEAR ls_storage_location.CLEAR ls_storage_locationx.CLEAR lv_positionno.CLEAR ls_return.CLEAR lv_error.ls_requ_quan-quantity = lt_resb-enmng.ls_requ_quan-uom = lt_resb-meins.ls_storage_location-werks = lt_resb-werks.ls_storage_locationx-werks = 'X'.
-
IF lt_resb-lgort IS NOT INITIAL.
-
ls_storage_location-lgort = lt_resb-lgort."选择屏幕
-
ls_storage_locationx-lgort = 'X'.
-
ENDIF.CALL FUNCTION 'CO_XT_COMPONENT_ADD'EXPORTINGis_order_key = gs_alv-aufnri_material = lt_resb-matnris_requ_quan = ls_requ_quani_operation = lv_operationis_storage_location = ls_storage_locationis_storage_locationx = ls_storage_locationxi_postp = 'L'i_posno = lv_positionnoIMPORTINGes_bapireturn = ls_returne_error_occurred = lv_error.IF lv_error = space."对工单行号重新刷ASSIGN ('(SAPLCOBC)RESB_BT[]') TO <ft_resb_bt>.LOOP AT <ft_resb_bt> ASSIGNING <fs_resb_bt>.CLEAR lv_numc.lv_numc = sy-tabix * 10.<fs_resb_bt>-posnr = lv_numc.ENDLOOP.
-
Commit transactionCALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'IMPORTINGes_bapireturn = ls_returne_error_occurred = lv_errorTABLESet_bapireturn = et_bapireturn.IF ( ls_return-type = 'S' ORls_return-type = 'W' ORls_return-type = 'I' ) ORls_return IS INITIAL.
-
Commit dataCALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.CALL FUNCTION 'CO_XT_ORDER_INITIALIZE'.gs_alv-msg = 'BOM组件新增成功'.gs_alv-led = icon_led_green.ELSE.
-
Data Rollback
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
gs_alv-msg = ‘BOM组件新增失败:’&& ls_return-message.
gs_alv-led = icon_led_red.ENDIF.ELSE.
-
Data RollbackCALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.gs_alv-msg = 'BOM组件新增失败:'&& ls_return-message.gs_alv-led = icon_led_red.ENDIF.ENDLOOP. IF sy-subrc <> 0.gs_alv-msg = '没有可以新增的BOM组件'&& ls_return-message.gs_alv-led = icon_led_red. ENDIF.
ENDIF.
MODIFY gt_alv FROM gs_alv TRANSPORTING led msg.
ENDLOOP.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_ZSC_SC
&---------------------------------------------------------------------
-
散车删除BOM组件
----------------------------------------------------------------------
FORM frm_zsc_sc .
*删除
DATA:lt_return TYPE coxt_t_bapireturn WITH HEADER LINE.
DATA:ls_return TYPE bapiret2.
DATA it_resb TYPE coxt_t_resbdel WITH HEADER LINE .
DATA:lt_resb LIKE TABLE OF resb WITH HEADER LINE.
DATA:ls_resb LIKE TABLE OF resb WITH HEADER LINE.
DATA lv_error TYPE c.
LOOP AT gt_alv INTO gs_alv WHERE box = ‘X’.
PERFORM frm_change_logrt."修改工厂库位IF gs_alv-led <> icon_led_red.REFRESH it_resb.CLEAR it_resb.REFRESH lt_resb.CLEAR lt_resb.REFRESH lt_return.CLEAR lt_return.CLEAR lv_error.CLEAR ls_return.CLEAR ls_resb.READ TABLE gt_stb INTO gs_stb WITH KEY aufnr = gs_alv-aufnridnrk = gs_alv-matnr_ctBINARY SEARCH.IF sy-subrc = 0."去除需要删除的组件LOOP AT gt_stb INTO DATA(ls_stb) WHERE vwegx = gs_stb-wegxx.SELECT SINGLErsnumrsposmatnrwerksbdmngenmngmeinsINTO CORRESPONDING FIELDS OF ls_resbFROM resbWHERE aufnr EQ gs_alv-aufnrAND matnr EQ ls_stb-idnrkAND xloek NE 'X'.IF sy-subrc = 0.CLEAR lt_resb.APPEND ls_resb TO lt_resb.ENDIF.ENDLOOP.ENDIF.IF lt_resb[] IS NOT INITIAL.it_resb[] = CORRESPONDING #( lt_resb[] ).CALL FUNCTION 'CO_XT_COMPONENTS_DELETE'EXPORTINGit_resbkeys_to_delete = it_resb[]IMPORTINGe_error_occurred = lv_errorTABLESct_bapireturn = lt_returnEXCEPTIONSdelete_failed = 1OTHERS = 2.IF lv_error = space.PERFORM change_flag_set(saplcozv).CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'IMPORTINGes_bapireturn = ls_returne_error_occurred = lv_error.COMMIT WORK AND WAIT.WAIT UP TO 1 SECONDS .IF ( ls_return-type = 'S'OR ls_return-type = 'W'OR ls_return-type = 'I' )OR ls_return IS INITIAL.
-
DB COMMMIT
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’. -
刷新变量
CALL FUNCTION ‘CO_XT_ORDER_INITIALIZE’.gs_alv-msg = 'BOM组件删除成功'.gs_alv-led = icon_led_green.ELSE.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.gs_alv-msg = 'BOM组件删除失败:'&& ls_return-message.gs_alv-led = icon_led_red.ENDIF.ELSE.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.gs_alv-msg = 'BOM组件删除失败:'&& ls_return-message.gs_alv-led = icon_led_red.ENDIF.
ELSE.
gs_alv-msg = ‘BOM没有可以组件删除’.
gs_alv-led = icon_led_red.ENDIF.
ENDIF.
MODIFY gt_alv FROM gs_alv TRANSPORTING led msg.
ENDLOOP.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_ALL_DATA
&---------------------------------------------------------------------
-
全选
----------------------------------------------------------------------
FORM frm_all_data .
LOOP AT gt_alv INTO gs_alv.
gs_alv-box = ‘X’.
MODIFY gt_alv FROM gs_alv.
ENDLOOP.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_SAL_DATA
&---------------------------------------------------------------------
-
取消全选
----------------------------------------------------------------------
FORM frm_sal_data .
LOOP AT gt_alv INTO gs_alv.
gs_alv-box = ‘’.
MODIFY gt_alv FROM gs_alv.
ENDLOOP.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_DIS_CO03
&---------------------------------------------------------------------
-
双击显示工单
----------------------------------------------------------------------
FORM frm_dis_co03 USING rs_selfield TYPE slis_selfield.
IF rs_selfield-fieldname = ‘AUFNR’.
READ TABLE gt_alv INTO gs_alv INDEX rs_selfield-tabindex.
IF sy-subrc = 0 .
SET PARAMETER ID ‘ANR’ FIELD gs_alv-aufnr.
CALL TRANSACTION ‘CO03’ AND SKIP FIRST SCREEN.
CLEAR gs_alv.
ENDIF.
ENDIF.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_CHANGE_LOGRT
&---------------------------------------------------------------------
-
修改工厂库位
----------------------------------------------------------------------
FORM frm_change_logrt .
DATA:ls_bapi_pp_order_change LIKE bapi_pp_order_change,
ls_bapi_pp_order_changex LIKE bapi_pp_order_changex,
ls_bapiret2 LIKE bapiret2.
"工单成品物料
SELECT SINGLE matnr
INTO @DATA(lv_mard_matnr)
FROM mard
WHERE matnr = @gs_alv-matnr
AND lgort = @p_lgort.
IF sy-subrc <> 0.
IF gs_alv-msg IS INITIAL.gs_alv-msg = '组件' && gs_alv-matnr && '没有维护库位' && p_lgort.
ELSE.gs_alv-msg = gs_alv-msg && '/' && '组件' && gs_alv-matnr && '没有维护库位' && p_lgort.
ENDIF.gs_alv-led = icon_led_red.
ELSE.
CLEAR:ls_bapi_pp_order_change ,ls_bapi_pp_order_changex,ls_bapiret2 .ls_bapi_pp_order_change-storage_location = p_lgort."修改库存地点
ls_bapi_pp_order_changex-storage_location = 'X'."修改库存地点标志CALL FUNCTION 'BAPI_PRODORD_CHANGE'EXPORTINGnumber = gs_alv-aufnrorderdata = ls_bapi_pp_order_changeorderdatax = ls_bapi_pp_order_changexIMPORTINGreturn = ls_bapiret2.IF ls_bapiret2-type = 'E'OR ls_bapiret2-type = 'A'.ROLLBACK WORK.IF gs_alv-msg IS INITIAL.gs_alv-msg = '工单库存地点修改失败:' && ls_bapiret2-message.ELSE.gs_alv-msg = gs_alv-msg && '/'&&'工单库存地点修改失败:' && ls_bapiret2-message.ENDIF.gs_alv-led = icon_led_red.ELSE.COMMIT WORK AND WAIT.gs_alv-msg = gs_alv-msg && '/' && '工单库存地点修改成功'.gs_alv-led = icon_led_green.ENDIF.
ENDIF.
ENDFORM.
相关文章:
CO02工单组件,新增/删除/修改
REPORT zpp153. 事务代码: ZPP153-整散车生产订单自动调整程序名称:ZPP153-整散车生产订单自动调整程序目的:ZPP153-整散车生产订单自动调整开发人员: *(修改日志)--------------------------------------------------------日志号…...
MIT6.824 lab3AB记录
实验目标:基于raft日志复制算法实现的线性一致性kv存储引擎。 线性一致性: 所有的读操作都能够读取到最近一次写操作的结果。所有节点(或者进程)在同一时刻,看到的数据都是相同的。 简而言之,线性一致性…...
一分钟了解美国棒球体系·棒球1号位
美国棒球体系是一个庞大且复杂的体系,涵盖了从青少年到职业的各个层次。下面是美国棒球体系的主要组成部分: 1. 青少年棒球(Youth Baseball) 美国的青少年棒球体系包括各种地区和全国性的联盟,如Little League、Pony…...

通过ObjectMapper和JsonNode 把JSON字符串转换成树结构数据和获取树节点数据
一.简介 今天同事有个需求,要把一个JSON字符串转换成一个树结构的数据并获取节点数据,鉴于自己不想写递归去转换,于是使用ObjectMapper和JsonNode类去实现。 二.依赖 pom文件引入依赖: <dependency><groupId>com.…...

鉴源论坛 · 观模丨面向界面的图形化测试技术
作者 | 熊一衡 华东师范大学软件工程学院博士 苏亭 华东师范大学软件工程学院教授 版块 | 鉴源论坛 观模 01 什么是面向界面的图形化测试(GUI Testing) 图形用户界面(GUI) 是一种通过图形化方式呈现信息、数据、功能和操作的用户界面,旨在…...

Midjourney以图生图的详细教程(含6种案例介绍)
🏆 文章目标:学习并介绍Midjourney以图生图的详细教程 🍀 Midjourney以图生图的详细教程 ✅ 创作者:熊猫Jay 🎉 个人主页:Jay的个人主页 🍁 展望:若本篇讲解内容帮助到您,…...

基于单片机的电路特性测试仪的设计
摘 要 当今社会科技的飞速发展,智能和便捷已经成为人们的日常诉求。现在放大电路在使用过程中经常出现故障,并且需要测试电路数据,但是大多数是手动进行测试,一定程度上影响了工作效率。 为了测量数据更安全更便捷,针…...

五一将迎2亿人次出行,君子签助力旅行社合规高效签旅游电子合同
近日,为规范旅游市场秩序,促进旅行社高质量发展,文旅部发布了《文化和旅游部办公厅关于进一步规范旅游市场秩序的通知》(下称《通知》),对旅游业提出了新的要求。 《通知》中规范了旅行社经营行为。旅行社要…...
IAP升级遇到的问题
文章目录 1. app程序在SystemClock_Config中跑飞2. 程序HAL_Delay中卡死3. 通过外部flash模拟的U盘没能被电脑识别4. 将bin文件拷贝到片内flash中失败5、APP程序跳转过后串口不能工作 这几天在STM32G473使用IAP升级的时候踩了不少坑 1. app程序在SystemClock_Config中跑飞 boo…...
简单聊聊k8s,和docker之间的关系
前言 随着云原生和微服务架构的快速发展,Kubernetes和Docker已经成为了两个重要的技术。但是有小伙伴通常对这两个技术的关系产生疑惑: 既然有了docker,为什么又出来一个k8s? 它俩之间是竞品的关系吗? 傻傻分不清。…...

半小时学会HTML5
一、了解几个概念 1、HTML定义 HTML是(Hyper Text Markup Language)超文本标记语言,超文本包含:文字、图片、音频、视频、动画等。 2、W3C 是什么? W3C 即(World Wide Web Consortium) 万维…...

研报精选230421
目录 【行业230421南京证券】氢能行业:地缘政治加速绿色能源转型 【行业230421华安证券】AIGC行业研究框架与投资逻辑 【行业230421信达证券】工控行业深度报告:行业拐点将至,国产品牌加速崛起 【个股230421国信证券_华阳集团】聚焦汽车智能化…...

AI绘图风格对照表/画风样稿详细研究记录及经验总结(分析Midjourney和Stable Diffusion风格提示词实际使用情况)不断更新中...
Midjourney和Stable Diffusion都可以通过输入文本生成出令人惊叹的AI图像。 Midjourney是一个收费的在线服务,通过discord对话的形式来生图,局限性较大,但由于后台官方模型做得好,因此出图效果非常完美; Stable Diffus…...

人工智能论文的风格特点
搞清楚AI领域论文的风格特点是写出一篇高质量AI论文的前提,AI领域的论文有如下显著特点。 1. 论文的架构非常清晰且富有逻辑。一篇高质量的AI论文,读者通过大致扫一眼论文的各级标题就能够对论文的写作思路形成清晰的认识,明白论文各部分之间…...

成功上岸国防科大!
Datawhale干货 作者:王洲烽,太原理工大学,Datawhale成员 写在前面 相比较于一般的经验贴,我更想在这里讲述一下自己的故事。我一开始报考的是北理工,但很遗憾9月份北理改考408了,无缘京爷,所以…...

【C语言】输入输出、字符串操作、内存操作、文件操作函数
三对基本输入输出函数 1.gets(),puts() gets()从标准输入中获取一个字符串,到str(自己创建的char型数组)中,读到换行或输入末尾结束获取r; 成功返回str,失败返回空。 char *gets(char *str)…...

[golang gin框架] 25.Gin 商城项目-配置清除缓存以及前台列表页面数据渲染公共数据
配置清除缓存 当进入前台首页时,会缓存对应的商品相关数据,这时,如果后台修改了商品的相关数据,缓存中的对应数据并没有随之发生改变,这时就需要需改对应的缓存数据,这里有两种方法: 方法一 在管理后台操作直接清除缓存中的所有数据,当再次访问前台首页时,就会先从数据库中获取…...

文件夹改名,如何在改名之后批量复制文件夹名称
在日常时候中会遇到给文件夹改名的时候,那么我们又如何在改名之后批量复制文件夹名称?今天就由小编来给大家分享一下操作办法。 首先第一步,我们要进入文件批量改名高手,并在板块栏里选择“文件夹批量改名”板块。 第二步…...

汇编与内联 x86-64
机器字长 x86是32位系统 64是64位系统 这里的32和64,指的都是机器字长 机器字长是 能直接进行整数/位运算的大小指针的大小(索引内存的范围) 容易与机器字长混淆的概念:字 字 字存储字长 字是MDR寄存器的位数,代表每个主存存储体中的存储…...
OSCP-UT99(IRC、Unreal Tournament 99)
目录 扫描 WEB IRC 提权 扫描 sudo nmap 192.168.142.44 -p- -sS -sV PORT STATE SERVICE VERSION 21/tcp open ftp FileZilla ftpd 80/tcp open http Apache httpd 2.4.16 (OpenSSL/1.0.1p PHP/5.6.12) 44…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...