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…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...