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…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
