省品牌建设联合会网站搜索引擎优化通常要注意的问题有
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.