REPORT ZZBPP_SCTZ_MJ.
TABLES: ZZTPP_ZSTZ_HEAD,
ZZTPP_ZSTZ_BODY1,
ZZTPP_ZSTZ_BODY2,
ZZTPP_ZSTZ_BODY3,
ZZTPP_ZSTZ_BODY4,
ZZTPP_ZSTZ_BODY5,
SSCRFIELDS.
*define listbox pools
TYPE-POOLS: VRM.
DATA: NAME TYPE VRM_ID,
IT_KC TYPE VRM_VALUES,
VALUE LIKE LINE OF IT_KC.
DATA: WB_PGEDITOR_INITIAL_SCREEN
TYPE REF TO CL_WB_PGEDITOR_INITIAL_SCREEN.
TYPES:
BEGIN OF GY_MKPF,
MBLNR TYPE MKPF-MBLNR,
MJAHR TYPE MKPF-MJAHR,
BKTXT TYPE MKPF-BKTXT,
END OF GY_MKPF,
BEGIN OF GY_BZW,
MATNR TYPE MSEG-MATNR, "成品代码
CHARG TYPE MSEG-CHARG, "批号
LGORT TYPE MSEG-LGORT,"库存地点
AUFNR TYPE MSEG-AUFNR, "产品订单号
MENGE TYPE MSEG-MENGE,"数量
MBLNR TYPE MSEG-MBLNR,
ZEILE TYPE MSEG-ZEILE,
MJAHR TYPE MSEG-MJAHR,
BWART TYPE MSEG-BWART,
SHKZG TYPE MSEG-SHKZG,"借方/贷方标识
END OF GY_BZW,
BEGIN OF GY_MSEG,
MATNR TYPE MSEG-MATNR, "成品代码
CHARG TYPE MSEG-CHARG, "批号
LGORT TYPE MSEG-LGORT,"库存地点
MENGE TYPE MSEG-MENGE,"数量
AUFNR TYPE MSEG-AUFNR, "产品订单号
MBLNR TYPE MSEG-MBLNR,
ZEILE TYPE MSEG-ZEILE,
MJAHR TYPE MSEG-MJAHR,
BWART TYPE MSEG-BWART,
SHKZG TYPE MSEG-SHKZG,"借方/贷方标识
END OF GY_MSEG.
* BEGIN OF GY_MSEG,
* MBLNR TYPE MSEG-MBLNR,
* ZEILE TYPE MSEG-ZEILE,
* MJAHR TYPE MSEG-MJAHR,
* BWART TYPE MSEG-BWART,
* MATNR TYPE MSEG-MATNR, "成品代码
* CHARG TYPE MSEG-CHARG, "批号
* LGORT TYPE MSEG-LGORT,"库存地点
* MENGE TYPE MSEG-MENGE,"数量
* AUFNR TYPE MSEG-AUFNR, "产品订单号
* END OF GY_MSEG.
*定义返工品分配到成本Tab里的比较结构 不同订单
TYPES:BEGIN OF TY_FGDDH,
FGDDH TYPE ZZTPP_ZSTZ_BODY2-FGDDH,
LGORT TYPE ZZTPP_ZSTZ_BODY2-LGORT, "2014-01-27
ZL TYPE ZZTPP_ZSTZ_BODY2-ZL,
END OF TY_FGDDH.
DATA: GW_FGDDH TYPE TY_FGDDH,
GT_FGDDH TYPE TABLE OF TY_FGDDH.
*定义返工品分配到成本Tab里的比较结构 相同订单
TYPES:BEGIN OF TY_XTDD, "返工品原订单号=返工到订单号时, 成品产量中扣除相应数额
YDDH TYPE ZZTPP_ZSTZ_BODY2-YDDH,
FGDDH TYPE ZZTPP_ZSTZ_BODY2-FGDDH,
LGORT TYPE ZZTPP_ZSTZ_BODY2-LGORT, "2014-01-27
ZL TYPE ZZTPP_ZSTZ_BODY2-ZL,
END OF TY_XTDD.
DATA: GW_XTDD TYPE TY_XTDD,
GT_XTDD TYPE TABLE OF TY_XTDD.
TYPES:BEGIN OF TY_GZ,
GZ TYPE CHAR01,
END OF TY_GZ.
DATA: GT_GZ TYPE TABLE OF TY_GZ,
GW_GZ TYPE TY_GZ.
DATA:
GT_MKPF TYPE STANDARD TABLE OF GY_MKPF,
GT_MSEG TYPE STANDARD TABLE OF GY_MSEG,
GT_ZJ_MSEG TYPE STANDARD TABLE OF GY_MSEG,
GT_BDC TYPE STANDARD TABLE OF BDCDATA,
GT_TEXT TYPE STANDARD TABLE OF CHAR16,
GS_TEXT TYPE CHAR16,
G_STR TYPE CHAR200,
* 白班 / 夜班 下拉框
I_LIST TYPE VRM_VALUES,
G_MYCONTAINER(30) TYPE C. " string for the containers
DATA: OK_CODE TYPE SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.
CONSTANTS :
*白班
C_BB(20) TYPE C VALUE '白班',
*夜班
C_YB(20) TYPE C VALUE '夜班'.
DATA:
GV_TITLE TYPE CHAR40,
GV_TXT_QA TYPE CHAR40,
GV_TXT_BN1 TYPE CHAR4,
GV_TXT_BN2 TYPE CHAR4,
GV_ANSWER TYPE CHAR01,
GT_HEAD TYPE TABLE OF ZZTPP_ZSTZ_HEAD,
GT_BODY1 TYPE TABLE OF ZZTPP_ZSTZ_BODY1,
GW_BODY1 TYPE ZZTPP_ZSTZ_BODY1,
GT_BODY2 TYPE TABLE OF ZZTPP_ZSTZ_BODY2,
GW_BODY2 TYPE ZZTPP_ZSTZ_BODY2,
GT_BODY3 TYPE TABLE OF ZZTPP_ZSTZ_BODY3,
GW_HUIZONG TYPE ZZTPP_ZSTZ_BODY3,
GT_HUIZONG TYPE TABLE OF ZZTPP_ZSTZ_BODY3,
GT_TAB3 TYPE TABLE OF ZZTPP_ZSTZ_BODY3,
GW_BODY3 TYPE ZZTPP_ZSTZ_BODY3,
GT_BODY4 TYPE TABLE OF ZZTPP_ZSTZ_BODY4,
GW_BODY5 TYPE ZZTPP_ZSTZ_BODY5,
GT_BODY5 TYPE TABLE OF ZZTPP_ZSTZ_BODY5.
DATA: GW_MAKTX TYPE MAKTX.
DATA: GW_AUFNR TYPE AUFNR.
DATA: GW_CHARG TYPE CHARG_D.
DATA: GW_BODY1_SUM TYPE ZZTPP_ZSTZ_BODY1-ZL,
GW_BODY3_SUM TYPE ZZTPP_ZSTZ_BODY3-YLCCHJ,
GW_BODY4_SUM TYPE ZZTPP_ZSTZ_BODY4-YLZL.
DATA: GW_CPCLSUM TYPE ZZTPP_ZSTZ_BODY3-CPCL."计算总产量
DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
TYPES:BEGIN OF TY_MESSAGE,
MESSAGE(500) TYPE C,
END OF TY_MESSAGE.
DATA: GT_MESSAGE TYPE TABLE OF TY_MESSAGE,
GW_MESSAGE TYPE TY_MESSAGE.
DATA: G_SUCCESS(1) TYPE C.
DATA: GW_CSS_MESSAGE(200).
DATA: PB_CLOSE_OPEN(1),"录入部分是否隐藏的判断
PB_CLOSE_OPEN1(1),
PB_CLOSE_OPEN2(1),
PB_CLOSE_OPEN3(1),
PB_CLOSE_OPEN4(1).
INCLUDE <ICON>.
**** Data declarations
DATA:
DTAB TYPE REF TO DATA,
NEWSTR2 TYPE REF TO CL_ABAP_TYPEDESCR,
TAB_TYPE1 TYPE REF TO CL_ABAP_TABLEDESCR,
LREF_DITAB TYPE REF TO DATA,
LREF_NEW_LINE TYPE REF TO DATA.
CONSTANTS C_LASI TYPE CHAR04 VALUE 'φ6.5'.
**** Field-Symbols declarations
FIELD-SYMBOLS:
<FS_DYN_TAB1> TYPE ANY TABLE,
<FS_DYN_TAB2> TYPE ANY TABLE,
<FS_DYN_TAB3> TYPE ANY TABLE,
<FS_DYN_TAB4> TYPE ANY TABLE,
<FS_DYN_TAB5> TYPE ANY TABLE,
<FS_DYN_WA> TYPE ANY.
**** Field Catalog declarations
DATA:
LS_FCAT1 TYPE LVC_S_FCAT,
LT_FCAT1 TYPE LVC_T_FCAT,
LS_FCAT2 TYPE LVC_S_FCAT,
LT_FCAT2 TYPE LVC_T_FCAT,
LS_FCAT3 TYPE LVC_S_FCAT,
LT_FCAT3 TYPE LVC_T_FCAT,
LS_FCAT4 TYPE LVC_S_FCAT,
LT_FCAT4 TYPE LVC_T_FCAT,
LS_FCAT5 TYPE LVC_S_FCAT,
LT_FCAT5 TYPE LVC_T_FCAT.
DATA: LS_LAYO TYPE LVC_S_LAYO.
**** Data declarations for ALV Display *
**** Object variable for ALV grid
DATA:
OBJ_MY_ALV_GRID1 TYPE REF TO CL_GUI_ALV_GRID,
OBJ_MY_ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID,
OBJ_MY_ALV_GRID3 TYPE REF TO CL_GUI_ALV_GRID,
OBJ_MY_ALV_GRID4 TYPE REF TO CL_GUI_ALV_GRID,
OBJ_MY_ALV_GRID5 TYPE REF TO CL_GUI_ALV_GRID.
**** Object variable for ALV Container
DATA:
OBJ_R_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
OBJ_R_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
OBJ_R_CONTAINER3 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
OBJ_R_CONTAINER4 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
OBJ_R_CONTAINER5 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
*---------------------------------------------------------------
* CLASS lcl_event_receiver DEFINITION
*---------------------------------------------------------------
CLASS LCL_EVENT_RECEIVER DEFINITION."定义双击事件
PUBLIC SECTION.
METHODS CATCH_DOUBLECLICK1
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW
E_COLUMN
ES_ROW_NO .
METHODS CATCH_DOUBLECLICK2
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW
E_COLUMN
ES_ROW_NO .
METHODS CATCH_DOUBLECLICK4
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW
E_COLUMN
ES_ROW_NO .
METHODS CATCH_DOUBLECLICK5
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW
E_COLUMN
ES_ROW_NO .
ENDCLASS. "lcl_event_receiver DEFINITION
*---------------------------------------------------------------
* CLASS lcl_event_receiver IMPLEMENTATION
*---------------------------------------------------------------
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION."事件的执行调用相应的处理过程
METHOD CATCH_DOUBLECLICK1."双击原料alv容器
PERFORM ATDOUBLECLICK1 USING E_ROW
E_COLUMN
ES_ROW_NO.
ENDMETHOD. "catch_doubleclick1
METHOD CATCH_DOUBLECLICK2."双击返工品alv容器
PERFORM ATDOUBLECLICK2 USING E_ROW
E_COLUMN
ES_ROW_NO.
ENDMETHOD. "catch_doubleclick2
METHOD CATCH_DOUBLECLICK4."双击余料alv容器
PERFORM ATDOUBLECLICK4 USING E_ROW
E_COLUMN
ES_ROW_NO.
ENDMETHOD. "catch_doubleclick4
METHOD CATCH_DOUBLECLICK5."双击余料alv容器
PERFORM ATDOUBLECLICK5 USING E_ROW
E_COLUMN
ES_ROW_NO.
ENDMETHOD. "catch_doubleclick5
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
DATA: EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
START-OF-SELECTION.
IF PB_CLOSE_OPEN IS INITIAL.
PB_CLOSE_OPEN = 'Y'.
ENDIF.
IF PB_CLOSE_OPEN1 IS INITIAL.
PB_CLOSE_OPEN1 = 'Y'.
ENDIF.
IF PB_CLOSE_OPEN2 IS INITIAL.
PB_CLOSE_OPEN2 = 'Y'.
ENDIF.
IF PB_CLOSE_OPEN3 IS INITIAL.
PB_CLOSE_OPEN3 = 'Y'.
ENDIF.
IF PB_CLOSE_OPEN4 IS INITIAL.
PB_CLOSE_OPEN4 = 'Y'.
ENDIF.
GV_TXT_BN1 = '是'.
GV_TXT_BN2 = '否'.
* Create Field Catalog
PERFORM CREATE_FIELD_CATALOG.
* Create Dynamic Table
PERFORM CREATE_DYNAMIC_TABLE1.
PERFORM CREATE_DYNAMIC_TABLE2.
PERFORM CREATE_DYNAMIC_TABLE3.
PERFORM CREATE_DYNAMIC_TABLE4.
PERFORM CREATE_DYNAMIC_TABLE5.
* Fill the dynamic tables with data
PERFORM FILL_DYNAMIC_TABLE.
* Call the screen no.100
PERFORM CALL_SCREEN.
*&---------------------------------------------------------------------*
*& Form CREATE_FIELD_CATALOG
*&---------------------------------------------------------------------*
FORM CREATE_FIELD_CATALOG .
* Append fields to field catalog table
"body1
REFRESH LT_FCAT1.
LS_FCAT1-FIELDNAME = 'YLDM'.
LS_FCAT1-REF_FIELD = 'YLDM'.
LS_FCAT1-OUTPUTLEN = '11'.
LS_FCAT1-REF_TABLE = 'ZZTPP_ZSTZ_BODY1'.
APPEND LS_FCAT1 TO LT_FCAT1.
CLEAR LS_FCAT1.
LS_FCAT1-FIELDNAME = 'YLMS'.
LS_FCAT1-REF_FIELD = 'YLMS'.
LS_FCAT1-OUTPUTLEN = '22'.
LS_FCAT1-REF_TABLE = 'ZZTPP_ZSTZ_BODY1'.
APPEND LS_FCAT1 TO LT_FCAT1.
CLEAR LS_FCAT1.
LS_FCAT1-FIELDNAME = 'YLPH'.
LS_FCAT1-REF_FIELD = 'YLPH'.
LS_FCAT1-OUTPUTLEN = '10'.
LS_FCAT1-REF_TABLE = 'ZZTPP_ZSTZ_BODY1'.
APPEND LS_FCAT1 TO LT_FCAT1.
CLEAR LS_FCAT1.
LS_FCAT1-FIELDNAME = 'LGORT'.
LS_FCAT1-REF_FIELD = 'LGORT'.
LS_FCAT1-OUTPUTLEN = '4'.
LS_FCAT1-REF_TABLE = 'ZZTPP_ZSTZ_BODY1'.
APPEND LS_FCAT1 TO LT_FCAT1.
CLEAR LS_FCAT1.
LS_FCAT1-FIELDNAME = 'ZL'.
LS_FCAT1-REF_FIELD = 'ZL'.
LS_FCAT1-OUTPUTLEN = '10'.
LS_FCAT1-DO_SUM = 'X'.
LS_FCAT1-REF_TABLE = 'ZZTPP_ZSTZ_BODY1'.
APPEND LS_FCAT1 TO LT_FCAT1.
CLEAR LS_FCAT1.
LS_FCAT1-FIELDNAME = 'ROWCOLOR'.
LS_FCAT1-REF_FIELD = 'ROWCOLOR'.
LS_FCAT1-OUTPUTLEN = '4'.
LS_FCAT1-REF_TABLE = 'ZZTPP_ZSTZ_BODY1'.
APPEND LS_FCAT1 TO LT_FCAT1.
CLEAR LS_FCAT1.
LS_FCAT1-FIELDNAME = 'MBLNR'.
LS_FCAT1-REF_FIELD = 'MBLNR'.
LS_FCAT1-OUTPUTLEN = '10'.
LS_FCAT1-REF_TABLE = 'ZZTPP_ZSTZ_BODY1'.
APPEND LS_FCAT1 TO LT_FCAT1.
"body2
REFRESH LT_FCAT2.
LS_FCAT2-FIELDNAME = 'FGPDM'.
LS_FCAT2-REF_FIELD = 'FGPDM'.
LS_FCAT2-OUTPUTLEN = '11'.
LS_FCAT2-REF_TABLE = 'ZZTPP_ZSTZ_BODY2'.
APPEND LS_FCAT2 TO LT_FCAT2.
CLEAR LS_FCAT2.
LS_FCAT2-FIELDNAME = 'FGPMS'.
LS_FCAT2-REF_FIELD = 'FGPMS'.
LS_FCAT2-OUTPUTLEN = '22'.
LS_FCAT2-REF_TABLE = 'ZZTPP_ZSTZ_BODY2'.
APPEND LS_FCAT2 TO LT_FCAT2.
CLEAR LS_FCAT2.
LS_FCAT2-FIELDNAME = 'FGOPH'.
LS_FCAT2-REF_FIELD = 'FGOPH'.
LS_FCAT2-OUTPUTLEN = '12'.
LS_FCAT2-REF_TABLE = 'ZZTPP_ZSTZ_BODY2'.
APPEND LS_FCAT2 TO LT_FCAT2.
CLEAR LS_FCAT2.
LS_FCAT2-FIELDNAME = 'YDDH'.
LS_FCAT2-REF_FIELD = 'YDDH'.
LS_FCAT2-OUTPUTLEN = '12'.
LS_FCAT2-REF_TABLE = 'ZZTPP_ZSTZ_BODY2'.
APPEND LS_FCAT2 TO LT_FCAT2.
CLEAR LS_FCAT2.
LS_FCAT2-FIELDNAME = 'FGDDH'.
LS_FCAT2-REF_FIELD = 'FGDDH'.
LS_FCAT2-OUTPUTLEN = '12'.
LS_FCAT2-REF_TABLE = 'ZZTPP_ZSTZ_BODY2'.
APPEND LS_FCAT2 TO LT_FCAT2.
CLEAR LS_FCAT2.
LS_FCAT2-FIELDNAME = 'LGORT'.
LS_FCAT2-REF_FIELD = 'LGORT'.
LS_FCAT2-OUTPUTLEN = '4'.
LS_FCAT2-REF_TABLE = 'ZZTPP_ZSTZ_BODY2'.
APPEND LS_FCAT2 TO LT_FCAT2.
CLEAR LS_FCAT2.
LS_FCAT2-FIELDNAME = 'ZL'.
LS_FCAT2-REF_FIELD = 'ZL'.
LS_FCAT2-OUTPUTLEN = '8'.
LS_FCAT2-DO_SUM = 'X'.
LS_FCAT2-REF_TABLE = 'ZZTPP_ZSTZ_BODY2'.
APPEND LS_FCAT2 TO LT_FCAT2.
CLEAR LS_FCAT2.
LS_FCAT2-FIELDNAME = 'ROWCOLOR'.
LS_FCAT2-REF_FIELD = 'ROWCOLOR'.
LS_FCAT2-OUTPUTLEN = '4'.
LS_FCAT2-REF_TABLE = 'ZZTPP_ZSTZ_BODY2'.
APPEND LS_FCAT2 TO LT_FCAT2.
CLEAR LS_FCAT2.
LS_FCAT2-FIELDNAME = 'MBLNR'.
LS_FCAT2-REF_FIELD = 'MBLNR'.
LS_FCAT2-OUTPUTLEN = '10'.
LS_FCAT2-REF_TABLE = 'ZZTPP_ZSTZ_BODY2'.
APPEND LS_FCAT2 TO LT_FCAT2.
"BODY3
REFRESH LT_FCAT3.
LS_FCAT3-FIELDNAME = 'MATNR'.
LS_FCAT3-REF_FIELD = 'MATNR'.
LS_FCAT3-OUTPUTLEN = '11'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'MAKTX'.
LS_FCAT3-REF_FIELD = 'MAKTX'.
LS_FCAT3-OUTPUTLEN = '14'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'CPDDH'.
LS_FCAT3-REF_FIELD = 'CPDDH'.
LS_FCAT3-OUTPUTLEN = '12'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'LGORT'.
LS_FCAT3-REF_FIELD = 'LGORT'.
LS_FCAT3-OUTPUTLEN = '4'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'HGPZL'.
LS_FCAT3-REF_FIELD = 'HGPZL'.
LS_FCAT3-OUTPUTLEN = '10'.
LS_FCAT3-DO_SUM = 'X'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'BHGPZL'.
LS_FCAT3-REF_FIELD = 'BHGPZL'.
LS_FCAT3-OUTPUTLEN = '12'.
LS_FCAT3-DO_SUM = 'X'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'DJYPZL'.
LS_FCAT3-REF_FIELD = 'DJYPZL'.
LS_FCAT3-OUTPUTLEN = '10'.
LS_FCAT3-DO_SUM = 'X'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'CPCCHEJ'.
LS_FCAT3-REF_FIELD = 'CPCCHEJ'.
LS_FCAT3-OUTPUTLEN = '12'.
LS_FCAT3-DO_SUM = 'X'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'FGP'.
LS_FCAT3-REF_FIELD = 'FGP'.
LS_FCAT3-OUTPUTLEN = '10'.
LS_FCAT3-DO_SUM = 'X'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'YLCCHJ'.
LS_FCAT3-REF_FIELD = 'YLCCHJ'.
LS_FCAT3-OUTPUTLEN = '12'.
LS_FCAT3-DO_SUM = 'X'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'CPCL'.
LS_FCAT3-REF_FIELD = 'CPCL'.
LS_FCAT3-OUTPUTLEN = '10'.
LS_FCAT3-DO_SUM = 'X'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'YLFT'.
LS_FCAT3-REF_FIELD = 'YLFT'.
LS_FCAT3-OUTPUTLEN = '12'.
LS_FCAT3-DO_SUM = 'X'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'BXFX'.
LS_FCAT3-REF_FIELD = 'BXFX'.
LS_FCAT3-OUTPUTLEN = '12'.
LS_FCAT3-DO_SUM = 'X'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'JQFT'.
LS_FCAT3-REF_FIELD = 'JQFT'.
LS_FCAT3-OUTPUTLEN = '8'.
LS_FCAT3-DO_SUM = 'X'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'RGFT'.
LS_FCAT3-REF_FIELD = 'RGFT'.
LS_FCAT3-OUTPUTLEN = '8'.
LS_FCAT3-DO_SUM = 'X'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
CLEAR LS_FCAT3.
LS_FCAT3-FIELDNAME = 'YDFT'.
LS_FCAT3-REF_FIELD = 'YDFT'.
LS_FCAT3-OUTPUTLEN = '8'.
LS_FCAT3-DO_SUM = 'X'.
LS_FCAT3-REF_TABLE = 'ZZTPP_ZSTZ_BODY3'.
APPEND LS_FCAT3 TO LT_FCAT3.
"BODY4
REFRESH LT_FCAT4.
LS_FCAT4-FIELDNAME = 'YLDM'.
LS_FCAT4-REF_FIELD = 'YLDM'.
LS_FCAT4-OUTPUTLEN = '12'.
LS_FCAT4-REF_TABLE = 'ZZTPP_ZSTZ_BODY4'.
APPEND LS_FCAT4 TO LT_FCAT4.
CLEAR LS_FCAT4.
LS_FCAT4-FIELDNAME = 'YLMS'.
LS_FCAT4-REF_FIELD = 'YLMS'.
LS_FCAT4-OUTPUTLEN = '26'.
LS_FCAT4-REF_TABLE = 'ZZTPP_ZSTZ_BODY4'.
APPEND LS_FCAT4 TO LT_FCAT4.
CLEAR LS_FCAT4.
LS_FCAT4-FIELDNAME = 'YLPH'.
LS_FCAT4-REF_FIELD = 'YLPH'.
LS_FCAT4-OUTPUTLEN = '10'.
LS_FCAT4-REF_TABLE = 'ZZTPP_ZSTZ_BODY4'.
APPEND LS_FCAT4 TO LT_FCAT4.
CLEAR LS_FCAT4.
LS_FCAT4-FIELDNAME = 'LGORT'.
LS_FCAT4-REF_FIELD = 'LGORT'.
LS_FCAT4-OUTPUTLEN = '4'.
LS_FCAT4-REF_TABLE = 'ZZTPP_ZSTZ_BODY4'.
APPEND LS_FCAT4 TO LT_FCAT4.
CLEAR LS_FCAT4.
LS_FCAT4-FIELDNAME = 'YLZL'.
LS_FCAT4-REF_FIELD = 'YLZL'.
LS_FCAT4-OUTPUTLEN = '10'.
LS_FCAT4-DO_SUM = 'X'.
LS_FCAT4-REF_TABLE = 'ZZTPP_ZSTZ_BODY4'.
APPEND LS_FCAT4 TO LT_FCAT4.
CLEAR LS_FCAT4.
LS_FCAT4-FIELDNAME = 'ROWCOLOR'.
LS_FCAT4-REF_FIELD = 'ROWCOLOR'.
LS_FCAT4-OUTPUTLEN = '4'.
LS_FCAT4-REF_TABLE = 'ZZTPP_ZSTZ_BODY4'.
APPEND LS_FCAT4 TO LT_FCAT4.
CLEAR LS_FCAT4.
LS_FCAT4-FIELDNAME = 'MBLNR'.
LS_FCAT4-REF_FIELD = 'MBLNR'.
LS_FCAT4-OUTPUTLEN = '10'.
LS_FCAT4-REF_TABLE = 'ZZTPP_ZSTZ_BODY4'.
APPEND LS_FCAT4 TO LT_FCAT4.
"BODY5
REFRESH LT_FCAT5.
LS_FCAT5-FIELDNAME = 'BZWLH'.
LS_FCAT5-REF_FIELD = 'BZWLH'.
LS_FCAT5-OUTPUTLEN = '11'.
LS_FCAT5-REF_TABLE = 'ZZTPP_ZSTZ_BODY5'.
APPEND LS_FCAT5 TO LT_FCAT5.
CLEAR LS_FCAT5.
LS_FCAT5-FIELDNAME = 'MAKTX'.
LS_FCAT5-REF_FIELD = 'MAKTX'.
LS_FCAT5-OUTPUTLEN = '28'.
LS_FCAT5-REF_TABLE = 'ZZTPP_ZSTZ_BODY5'.
APPEND LS_FCAT5 TO LT_FCAT5.
CLEAR LS_FCAT5.
LS_FCAT5-FIELDNAME = 'BZWPH'.
LS_FCAT5-REF_FIELD = 'BZWPH'.
LS_FCAT5-OUTPUTLEN = '10'.
LS_FCAT5-REF_TABLE = 'ZZTPP_ZSTZ_BODY5'.
APPEND LS_FCAT5 TO LT_FCAT5.
CLEAR LS_FCAT5.
LS_FCAT5-FIELDNAME = 'LGORT'.
LS_FCAT5-REF_FIELD = 'LGORT'.
LS_FCAT5-OUTPUTLEN = '4'.
LS_FCAT5-REF_TABLE = 'ZZTPP_ZSTZ_BODY5'.
APPEND LS_FCAT5 TO LT_FCAT5.
CLEAR LS_FCAT5.
LS_FCAT5-FIELDNAME = 'BZWSL'.
LS_FCAT5-REF_FIELD = 'BZWSL'.
LS_FCAT5-OUTPUTLEN = '10'.
LS_FCAT5-REF_TABLE = 'ZZTPP_ZSTZ_BODY5'.
APPEND LS_FCAT5 TO LT_FCAT5.
CLEAR LS_FCAT5.
LS_FCAT5-FIELDNAME = 'SCDDH'.
LS_FCAT5-REF_FIELD = 'SCDDH'.
LS_FCAT5-OUTPUTLEN = '12'.
LS_FCAT5-REF_TABLE = 'ZZTPP_ZSTZ_BODY5'.
APPEND LS_FCAT5 TO LT_FCAT5.
CLEAR LS_FCAT5.
LS_FCAT5-FIELDNAME = 'MBLNR'.
LS_FCAT5-REF_FIELD = 'MBLNR'.
LS_FCAT5-OUTPUTLEN = '10'.
LS_FCAT5-REF_TABLE = 'ZZTPP_ZSTZ_BODY5'.
APPEND LS_FCAT5 TO LT_FCAT5.
CLEAR LS_FCAT5.
LS_FCAT5-FIELDNAME = 'ROWCOLOR'.
LS_FCAT5-REF_FIELD = 'ROWCOLOR'.
LS_FCAT5-OUTPUTLEN = '4'.
LS_FCAT5-REF_TABLE = 'ZZTPP_ZSTZ_BODY5'.
APPEND LS_FCAT5 TO LT_FCAT5.
ENDFORM. " CREATE_FIELD_CATALOG
*&---------------------------------------------------------------------*
*& Form CREATE_DYNAMIC_TABLE
*&---------------------------------------------------------------------*
FORM CREATE_DYNAMIC_TABLE1 .
** Create dynamic table1
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = LT_FCAT1
IMPORTING
EP_TABLE = LREF_DITAB
EXCEPTIONS
GENERATE_SUBPOOL_DIR_FULL = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
** Assign the dynamic table reference to a field-symbol
ASSIGN LREF_DITAB->* TO <FS_DYN_TAB1>.
** Create a structure similar to the dynamic table created
CREATE DATA LREF_NEW_LINE LIKE LINE OF <FS_DYN_TAB1>.
ASSIGN LREF_NEW_LINE->* TO <FS_DYN_WA>.
ENDFORM. " CREATE_DYNAMIC_TABLE
*&---------------------------------------------------------------------*
*& Form CREATE_DYNAMIC_TABLE
*&---------------------------------------------------------------------*
FORM CREATE_DYNAMIC_TABLE2 .
** Create dynamic table2
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = LT_FCAT2
IMPORTING
EP_TABLE = LREF_DITAB
EXCEPTIONS
GENERATE_SUBPOOL_DIR_FULL = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
** Assign the dynamic table reference to a field-symbol
ASSIGN LREF_DITAB->* TO <FS_DYN_TAB2>.
** Create a structure similar to the dynamic table created
CREATE DATA LREF_NEW_LINE LIKE LINE OF <FS_DYN_TAB2>.
ASSIGN LREF_NEW_LINE->* TO <FS_DYN_WA>.
ENDFORM. " CREATE_DYNAMIC_TABLE
*&---------------------------------------------------------------------*
*& Form create_dynamic_table3
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CREATE_DYNAMIC_TABLE3 .
** Create dynamic table3
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = LT_FCAT3
IMPORTING
EP_TABLE = LREF_DITAB
EXCEPTIONS
GENERATE_SUBPOOL_DIR_FULL = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
** Assign the dynamic table reference to a field-symbol
ASSIGN LREF_DITAB->* TO <FS_DYN_TAB3>.
** Create a structure similar to the dynamic table created
CREATE DATA LREF_NEW_LINE LIKE LINE OF <FS_DYN_TAB3>.
ASSIGN LREF_NEW_LINE->* TO <FS_DYN_WA>.
ENDFORM. " CREATE_DYNAMIC_TABLE
*&---------------------------------------------------------------------*
*& Form create_dynamic_table4
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CREATE_DYNAMIC_TABLE4 .
** Create dynamic table4
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = LT_FCAT4
IMPORTING
EP_TABLE = LREF_DITAB
EXCEPTIONS
GENERATE_SUBPOOL_DIR_FULL = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
** Assign the dynamic table reference to a field-symbol
ASSIGN LREF_DITAB->* TO <FS_DYN_TAB4>.
** Create a structure similar to the dynamic table created
CREATE DATA LREF_NEW_LINE LIKE LINE OF <FS_DYN_TAB4>.
ASSIGN LREF_NEW_LINE->* TO <FS_DYN_WA>.
ENDFORM. " CREATE_DYNAMIC_TABLE
*&---------------------------------------------------------------------*
*& Form create_dynamic_table5
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CREATE_DYNAMIC_TABLE5 .
** Create dynamic table4
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = LT_FCAT5
IMPORTING
EP_TABLE = LREF_DITAB
EXCEPTIONS
GENERATE_SUBPOOL_DIR_FULL = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
** Assign the dynamic table reference to a field-symbol
ASSIGN LREF_DITAB->* TO <FS_DYN_TAB5>.
** Create a structure similar to the dynamic table created
CREATE DATA LREF_NEW_LINE LIKE LINE OF <FS_DYN_TAB5>.
ASSIGN LREF_NEW_LINE->* TO <FS_DYN_WA>.
ENDFORM. " CREATE_DYNAMIC_TABLE
*&---------------------------------------------------------------------*
*& Form FILL_DYNAMIC_TABLE
*&---------------------------------------------------------------------*
FORM FILL_DYNAMIC_TABLE.
** Fill the dynamic table <fs_dyn_tab1>
SELECT YLDM YLMS YLPH LGORT ZL ROWCOLOR MBLNR
FROM ZZTPP_ZSTZ_BODY1 INTO TABLE <FS_DYN_TAB1>
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
** Fill the dynamic table <fs_dyn_tab2>
SELECT FGPDM FGPMS FGOPH YDDH FGDDH LGORT ZL ROWCOLOR MBLNR
FROM ZZTPP_ZSTZ_BODY2 INTO TABLE <FS_DYN_TAB2>
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
** Fill the dynamic table <fs_dyn_tab3>
SELECT MATNR MAKTX CPDDH LGORT HGPZL BHGPZL DJYPZL
CPCCHEJ FGP YLCCHJ CPCL YLFT BXFX JQFT RGFT YDFT
FROM ZZTPP_ZSTZ_BODY3 INTO TABLE <FS_DYN_TAB3>
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
** Fill the dynamic table <fs_dyn_tab4>
SELECT YLDM YLMS YLPH LGORT YLZL ROWCOLOR MBLNR
FROM ZZTPP_ZSTZ_BODY4 INTO TABLE <FS_DYN_TAB4>
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
** Fill the dynamic table <fs_dyn_tab5>
SELECT BZWLH MAKTX BZWPH LGORT BZWSL SCDDH MBLNR ROWCOLOR
FROM ZZTPP_ZSTZ_BODY5 INTO TABLE <FS_DYN_TAB5>
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
ENDFORM. " FILL_DYNAMIC_TABLE
*&---------------------------------------------------------------------*
*& Form CALL_SCREEN
*&---------------------------------------------------------------------*
FORM CALL_SCREEN .
CALL SCREEN 0010.
ENDFORM. " CALL_SCREEN
*&---------------------------------------------------------------------*
*& Module STATUS_0010 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0010 OUTPUT.
DATA LV_DAT TYPE D.
DATA:
LV_NAME TYPE STRING ,
LV_NAME_FIRST LIKE ADRP-NAME_FIRST ,
LV_NAME_LAST LIKE ADRP-NAME_LAST.
SELECT SINGLE ADRP~NAME_FIRST ADRP~NAME_LAST
INTO (LV_NAME_FIRST,LV_NAME_LAST)
FROM ADRP
INNER JOIN USR21
ON ADRP~PERSNUMBER = USR21~PERSNUMBER
WHERE USR21~BNAME = SY-UNAME .
IF SY-SUBRC = 0 .
CONCATENATE LV_NAME_LAST LV_NAME_FIRST INTO LV_NAME .
ELSE .
LV_NAME = SY-UNAME .
ENDIF.
CLEAR: LV_NAME_FIRST,
LV_NAME_LAST .
SET PF-STATUS '0010' EXCLUDING 'BZWLR'.
SET TITLEBAR 'TITLE0010' WITH LV_NAME.
*白班夜班下拉框
PERFORM FRM_SET_BBORYB.
DATA: LS_ST_BUDAT TYPE SY-DATUM.
SELECT SINGLE BUDAT INTO LS_ST_BUDAT
FROM ZZTPP_ZSTZ_HEAD
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND GZ = 'Y'.
IF SY-SUBRC = 0.
ZZTPP_ZSTZ_HEAD-BUDAT = LS_ST_BUDAT.
* ELSE.
* ZZTPP_ZSTZ_HEAD-BUDAT = SY-DATUM.
ENDIF.
*******Change at + 20120612
IF ZZTPP_ZSTZ_HEAD-BUDAT IS INITIAL.
* ZZTPP_ZSTZ_HEAD-BUDAT = SY-DATUM.
CLEAR : LV_DAT.
IF STRLEN( ZZTPP_ZSTZ_HEAD-BTBHA ) = 8.
CONCATENATE '20' ZZTPP_ZSTZ_HEAD-BTBHA+2(6) INTO LV_DAT.
ELSEIF STRLEN( ZZTPP_ZSTZ_HEAD-BTBHA ) = 10.
CONCATENATE '20' ZZTPP_ZSTZ_HEAD-BTBHA+4(6) INTO LV_DAT.
ENDIF.
ZZTPP_ZSTZ_HEAD-BUDAT = LV_DAT.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-GZ = 'Y'. "如果工时已过帐,总工时栏位只读不能写入
LOOP AT SCREEN.
IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BZWZS' .
SCREEN-INPUT = '0' .
MODIFY SCREEN.
ELSEIF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-GZ' .
SCREEN-INPUT = '0' .
MODIFY SCREEN.
ELSEIF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-SBQSJS' .
SCREEN-INPUT = '0' .
MODIFY SCREEN.
ELSEIF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-SBZZJS' .
SCREEN-INPUT = '0' .
MODIFY SCREEN.
ELSEIF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
SCREEN-INPUT = '0' .
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
*set default storage
IF ZZTPP_ZSTZ_BODY1-LGORT IS INITIAL.
ZZTPP_ZSTZ_BODY1-LGORT = 'L001'.
ENDIF.
IF ZZTPP_ZSTZ_BODY2-LGORT IS INITIAL.
ZZTPP_ZSTZ_BODY2-LGORT = 'L001'.
ENDIF.
IF ZZTPP_ZSTZ_BODY4-LGORT IS INITIAL.
ZZTPP_ZSTZ_BODY4-LGORT = 'L001'.
ENDIF.
IF ZZTPP_ZSTZ_BODY5-LGORT IS INITIAL.
ZZTPP_ZSTZ_BODY5-LGORT = 'L001'.
ENDIF.
*modify screen according predefined screen group
LOOP AT SCREEN.
CASE SCREEN-GROUP1.
WHEN 'GP'.
IF PB_CLOSE_OPEN = 'Y'.
SCREEN-ACTIVE = '0'.
ELSEIF PB_CLOSE_OPEN = 'N'.
SCREEN-ACTIVE = '1'.
ENDIF.
MODIFY SCREEN.
CASE SCREEN-GROUP2.
WHEN 'GP1'.
IF PB_CLOSE_OPEN1 = 'Y'.
SCREEN-ACTIVE = '0'.
ELSEIF PB_CLOSE_OPEN1 = 'N'.
SCREEN-ACTIVE = '1'.
ENDIF.
MODIFY SCREEN.
WHEN 'GP2'.
IF PB_CLOSE_OPEN2 = 'Y'.
SCREEN-ACTIVE = '0'.
ELSEIF PB_CLOSE_OPEN2 = 'N'.
SCREEN-ACTIVE = '1'.
ENDIF.
MODIFY SCREEN.
WHEN 'GP3'.
IF PB_CLOSE_OPEN3 = 'Y'.
SCREEN-ACTIVE = '0'.
ELSEIF PB_CLOSE_OPEN3 = 'N'.
SCREEN-ACTIVE = '1'.
ENDIF.
MODIFY SCREEN.
WHEN 'GP4'.
IF PB_CLOSE_OPEN4 = 'Y'.
SCREEN-ACTIVE = '0'.
ELSEIF PB_CLOSE_OPEN4 = 'N'.
SCREEN-ACTIVE = '1'.
ENDIF.
MODIFY SCREEN.
ENDCASE.
ENDCASE.
ENDLOOP.
LS_LAYO-INFO_FNAME = 'ROWCOLOR'.
IF OBJ_MY_ALV_GRID1 IS INITIAL.
* Object for container1
CREATE OBJECT OBJ_R_CONTAINER1
EXPORTING
CONTAINER_NAME = 'YCLC'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Object for Alv grid1
CREATE OBJECT OBJ_MY_ALV_GRID1
EXPORTING
I_PARENT = OBJ_R_CONTAINER1
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->CATCH_DOUBLECLICK1 FOR OBJ_MY_ALV_GRID1."向ALV创建双击事件
* Calling method for displaying the data
CALL METHOD OBJ_MY_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LS_LAYO
CHANGING
IT_OUTTAB = <FS_DYN_TAB1>
IT_FIELDCATALOG = LT_FCAT1
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
* ALV Display-2nd table
*----------------------------------------------------------------------*
* Object for conatainer2
IF OBJ_MY_ALV_GRID2 IS INITIAL.
CREATE OBJECT OBJ_R_CONTAINER2
EXPORTING
CONTAINER_NAME = 'FGPC'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Object for Alv grid2
CREATE OBJECT OBJ_MY_ALV_GRID2
EXPORTING
I_PARENT = OBJ_R_CONTAINER2
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->CATCH_DOUBLECLICK2 FOR OBJ_MY_ALV_GRID2."向ALV创建双击事件
* Calling method for displaying the data
CALL METHOD OBJ_MY_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LS_LAYO
CHANGING
IT_OUTTAB = <FS_DYN_TAB2>
IT_FIELDCATALOG = LT_FCAT2
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
IF OBJ_MY_ALV_GRID3 IS INITIAL.
* Object for container3
CREATE OBJECT OBJ_R_CONTAINER3
EXPORTING
CONTAINER_NAME = 'ALVCONTAINER'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Object for Alv grid3
CREATE OBJECT OBJ_MY_ALV_GRID3
EXPORTING
I_PARENT = OBJ_R_CONTAINER3
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Calling method for displaying the data
CALL METHOD OBJ_MY_ALV_GRID3->SET_TABLE_FOR_FIRST_DISPLAY
CHANGING
IT_OUTTAB = <FS_DYN_TAB3>
IT_FIELDCATALOG = LT_FCAT3
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
* ALV Display-2nd table
*----------------------------------------------------------------------*
* Object for conatainer4
IF OBJ_MY_ALV_GRID4 IS INITIAL.
CREATE OBJECT OBJ_R_CONTAINER4
EXPORTING
CONTAINER_NAME = 'YLC'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Object for Alv grid4
CREATE OBJECT OBJ_MY_ALV_GRID4
EXPORTING
I_PARENT = OBJ_R_CONTAINER4
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->CATCH_DOUBLECLICK4 FOR OBJ_MY_ALV_GRID4."向ALV创建双击事件
* Calling method for displaying the data
CALL METHOD OBJ_MY_ALV_GRID4->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LS_LAYO
CHANGING
IT_OUTTAB = <FS_DYN_TAB4>
IT_FIELDCATALOG = LT_FCAT4
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
* ALV Display-2nd table
*----------------------------------------------------------------------*
* Object for conatainer5
IF OBJ_MY_ALV_GRID5 IS INITIAL.
CREATE OBJECT OBJ_R_CONTAINER5
EXPORTING
CONTAINER_NAME = 'BZWC'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Object for Alv grid4
CREATE OBJECT OBJ_MY_ALV_GRID5
EXPORTING
I_PARENT = OBJ_R_CONTAINER5
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->CATCH_DOUBLECLICK5 FOR OBJ_MY_ALV_GRID5."向ALV创建双击事件
* Calling method for displaying the data
CALL METHOD OBJ_MY_ALV_GRID5->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LS_LAYO
CHANGING
IT_OUTTAB = <FS_DYN_TAB5>
IT_FIELDCATALOG = LT_FCAT5
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
*set value for listbox
IF ZZTPP_ZSTZ_HEAD-BTBHA IS NOT INITIAL.
PERFORM SET_LISTVALUE.
ENDIF.
ENDMODULE. " STATUS_0010 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0010 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0010 INPUT.
DATA:VAL,
PRIPAR LIKE PRI_PARAMS,
ARCPAR LIKE ARC_PARAMS.
SAVE_OK = OK_CODE.
CLEAR:OK_CODE.
CLEAR GV_ANSWER.
CASE SAVE_OK.
WHEN 'UPDATE'.
TRANSLATE ZZTPP_ZSTZ_HEAD-BTBHA TO UPPER CASE.
PERFORM UPDATE_DATA."更新数据
WHEN 'SEARCH'.
TRANSLATE ZZTPP_ZSTZ_HEAD-BTBHA TO UPPER CASE.
PERFORM SEARCH_DATA."查询数据
WHEN 'REFRESH'.
PERFORM FRM_CLEAR_SCREEN.
* WHEN 'BZWLR'.
* PERFORM callco11n."依生产订单调用co11n
WHEN 'OFFSET'."冲销报工
PERFORM FRM_WRITE_OFF.
WHEN 'SAVEH'.
PERFORM HEAD_TRANSLATE_TO_UPPER_CASE.
PERFORM SAVEH_DATA. "保存头数据
WHEN 'SAVE1'. "保存原料录入数据
PERFORM BODY1_TRANSLATE_TO_UPPER_CASE.
PERFORM SAVE1_DATA.
WHEN 'SAVE2'."保存返工品录入数据
PERFORM BODY2_TRANSLATE_TO_UPPER_CASE.
PERFORM SAVE2_DATA.
WHEN 'SAVE3'."保存余料录入数据
PERFORM BODY4_TRANSLATE_TO_UPPER_CASE.
PERFORM SAVE3_DATA.
WHEN 'SAVE4'. "保存包装物录入数据
PERFORM BODY5_TRANSLATE_TO_UPPER_CASE.
PERFORM SAVE4_DATA.
WHEN 'DEL1'. "删除原料数据
PERFORM BODY1_TRANSLATE_TO_UPPER_CASE.
PERFORM DEL1_DATA.
WHEN 'DEL2'. "删除返工品数据
PERFORM BODY2_TRANSLATE_TO_UPPER_CASE.
PERFORM DEL2_DATA.
WHEN 'DEL3'. "删除余料数据
PERFORM BODY4_TRANSLATE_TO_UPPER_CASE.
PERFORM DEL3_DATA.
WHEN 'DEL4'. "删除包装物数据
PERFORM BODY5_TRANSLATE_TO_UPPER_CASE.
PERFORM DEL4_DATA.
WHEN 'POSTH'.
PERFORM POSTH_DATA."过账工时数据
WHEN 'POST1'.
PERFORM POST1_DATA."过账原料数据
WHEN 'POST2'.
PERFORM POST2_DATA."过账返工品数据
WHEN 'POST3'.
PERFORM POST3_DATA."过账余料数据
WHEN 'POST4'.
PERFORM POST4_DATA."过账包装物数据
WHEN 'PB_OC'."折叠录入部分
IF PB_CLOSE_OPEN = 'Y'.
PB_CLOSE_OPEN = 'N'.
ELSEIF PB_CLOSE_OPEN = 'N'.
PB_CLOSE_OPEN = 'Y'.
ENDIF.
WHEN 'PB_OC1'."折叠原料录入部分
IF PB_CLOSE_OPEN1 = 'Y'.
PB_CLOSE_OPEN1 = 'N'.
ELSEIF PB_CLOSE_OPEN1 = 'N'.
PB_CLOSE_OPEN1 = 'Y'.
ENDIF.
WHEN 'PB_OC2'."折叠返工品录入部分
IF PB_CLOSE_OPEN2 = 'Y'.
PB_CLOSE_OPEN2 = 'N'.
ELSEIF PB_CLOSE_OPEN2 = 'N'.
PB_CLOSE_OPEN2 = 'Y'.
ENDIF.
WHEN 'PB_OC3'."折叠余料录入部分
IF PB_CLOSE_OPEN3 = 'Y'.
PB_CLOSE_OPEN3 = 'N'.
ELSEIF PB_CLOSE_OPEN3 = 'N'.
PB_CLOSE_OPEN3 = 'Y'.
ENDIF.
WHEN 'PB_OC4'."折叠包装物录入部分
IF PB_CLOSE_OPEN4 = 'Y'.
PB_CLOSE_OPEN4 = 'N'.
ELSEIF PB_CLOSE_OPEN4 = 'N'.
PB_CLOSE_OPEN4 = 'Y'.
ENDIF.
WHEN '&RNT'.
* CALL FUNCTION 'GET_PRINT_PARAMETERS'
* EXPORTING
* LAYOUT = 'X_58_170'
* LINE_COUNT = '58'
* LINE_SIZE = '170'
* IMPORTING
* OUT_PARAMETERS = PRIPAR
* OUT_ARCHIVE_PARAMETERS = ARCPAR
* VALID = VAL
* EXCEPTIONS
* ARCHIVE_INFO_NOT_FOUND = 1
* INVALID_PRINT_PARAMS = 2
* INVALID_ARCHIVE_PARAMS = 3
* OTHERS = 4.
* IF VAL <> SPACE AND SY-SUBRC = 0.
* SUBMIT ZZBPP_SCTZ_MJ TO SAP-SPOOL
* ARCHIVE PARAMETERS ARCPAR
* WITHOUT SPOOL DYNPRO.
* ENDIF.
" NEW-PAGE PRINT ON PARAMETERS pripar.
*打印功能
PERFORM FRM_PRINT_INFO.
ENDCASE.
ENDMODULE. " USER_COMMAND_0010 INPUT
*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
* 退出界面
*----------------------------------------------------------------------*
MODULE EXIT INPUT.
IF OK_CODE = 'SCKQ'.
CALL TRANSACTION 'ZPP120'.
ELSEIF OK_CODE = 'ORDER'.
CALL TRANSACTION 'CO03'.
ELSEIF OK_CODE = 'MOVE'.
CALL TRANSACTION 'ZPP102'.
ELSEIF OK_CODE = 'CONVERT'.
CALL TRANSACTION 'ZMM004'.
ELSEIF OK_CODE = 'SYSTEM'.
CALL TRANSACTION 'COOIS'.
ELSEIF OK_CODE = 'BALANCE'.
CALL TRANSACTION 'ZPP130'.
ELSEIF OK_CODE = 'SALARY'.
SUBMIT ZWAGE_MAINTAIN VIA SELECTION-SCREEN AND RETURN.
* CALL TRANSACTION 'ZPP124'.
ELSE.
LEAVE TO SCREEN 0.
ENDIF.
CLEAR OK_CODE.
ENDMODULE. "exit INPUT
*&---------------------------------------------------------------------*
*& Form UPDATE_DATA
*&---------------------------------------------------------------------*
* 查询并更新自定义表
*----------------------------------------------------------------------*
FORM UPDATE_DATA .
TYPES: BEGIN OF TY_AFRU,
AUFNR TYPE AFRU-AUFNR,
LTXA1 TYPE AFRU-LTXA1,
ISM01 TYPE AFRU-ISM01,
ISM02 TYPE AFRU-ISM02,
ISM03 TYPE AFRU-ISM03,
BUDAT TYPE AFRU-BUDAT,
END OF TY_AFRU.
DATA: LT_AFRU TYPE TABLE OF TY_AFRU,
LT_GS_AFRU TYPE TABLE OF TY_AFRU,
LW_AFRU TYPE TY_AFRU.
TYPES:BEGIN OF TY_HEAD_BTBHA,
BTBHA TYPE ZZTPP_ZSTZ_HEAD-BTBHA,
END OF TY_HEAD_BTBHA.
TYPES:BEGIN OF TY_UD_BODY1,
BTBHA TYPE ZZTPP_ZSTZ_BODY1-BTBHA,
YLDM TYPE ZZTPP_ZSTZ_BODY1-YLDM,
YLPH TYPE ZZTPP_ZSTZ_BODY1-YLPH,
LGORT TYPE ZZTPP_ZSTZ_BODY1-LGORT,
*******Change at 2012-05-29
MBLNR TYPE ZZTPP_ZSTZ_BODY1-MBLNR,
END OF TY_UD_BODY1.
TYPES:BEGIN OF TY_UD_BODY2,
BTBHA TYPE ZZTPP_ZSTZ_BODY2-BTBHA,
FGPDM TYPE ZZTPP_ZSTZ_BODY2-FGPDM,
FGOPH TYPE ZZTPP_ZSTZ_BODY2-FGOPH,
YDDH TYPE ZZTPP_ZSTZ_BODY2-YDDH,
FGDDH TYPE ZZTPP_ZSTZ_BODY2-FGDDH,
LGORT TYPE ZZTPP_ZSTZ_BODY2-LGORT,
*******Change at 2012-05-29
MBLNR TYPE ZZTPP_ZSTZ_BODY2-MBLNR,
END OF TY_UD_BODY2.
TYPES:BEGIN OF TY_UD_BODY4,
BTBHA TYPE ZZTPP_ZSTZ_BODY4-BTBHA,
YLDM TYPE ZZTPP_ZSTZ_BODY4-YLDM,
YLPH TYPE ZZTPP_ZSTZ_BODY4-YLPH,
LGORT TYPE ZZTPP_ZSTZ_BODY4-LGORT,
*******Change at 2012-05-29
MBLNR TYPE ZZTPP_ZSTZ_BODY4-MBLNR,
END OF TY_UD_BODY4.
TYPES:BEGIN OF TY_FT,
AUFNR TYPE MSEG-AUFNR,
MENGE TYPE MSEG-MENGE,
END OF TY_FT.
DATA: LT_FT1 TYPE TABLE OF TY_FT,
LT_FT2 TYPE TABLE OF TY_FT,
LT_FT4 TYPE TABLE OF TY_FT,
LW_FT TYPE TY_FT,
LT_HZ_FT1 TYPE TABLE OF TY_FT,
LT_HZ_FT2 TYPE TABLE OF TY_FT,
LT_HZ_FT4 TYPE TABLE OF TY_FT.
DATA: LT_OLD_BODY1 TYPE TABLE OF TY_UD_BODY1,
LT_OLD_BODY2 TYPE TABLE OF TY_UD_BODY2,
LT_OLD_BODY4 TYPE TABLE OF TY_UD_BODY4,
LT_NEW_BODY1 TYPE TABLE OF TY_UD_BODY1,
LT_NEW_BODY2 TYPE TABLE OF TY_UD_BODY2,
LT_NEW_BODY4 TYPE TABLE OF TY_UD_BODY4,
DEL_1_TAB TYPE TABLE OF TY_UD_BODY1,
DEL_2_TAB TYPE TABLE OF TY_UD_BODY2,
DEL_4_TAB TYPE TABLE OF TY_UD_BODY4,
LR_1 TYPE TY_UD_BODY1,
LR_2 TYPE TY_UD_BODY2,
LR_4 TYPE TY_UD_BODY4.
DATA: LW_UD_HEAD TYPE ZZTPP_ZSTZ_HEAD,
LW_UD_BODY1 TYPE ZZTPP_ZSTZ_BODY1,
LW_UD_BODY2 TYPE ZZTPP_ZSTZ_BODY2,
LW_UD_BODY3 TYPE ZZTPP_ZSTZ_BODY3,
LW_UD_BODY4 TYPE ZZTPP_ZSTZ_BODY4,
LW_UD_BODY5 TYPE ZZTPP_ZSTZ_BODY5.
DATA: LT_UD_HEAD TYPE TABLE OF ZZTPP_ZSTZ_HEAD,
LT_UD_BODY1 TYPE TABLE OF ZZTPP_ZSTZ_BODY1,
LT_UD_BODY2 TYPE TABLE OF ZZTPP_ZSTZ_BODY2,
LT_UD_BODY3 TYPE TABLE OF ZZTPP_ZSTZ_BODY3,
LT_UD_BODY4 TYPE TABLE OF ZZTPP_ZSTZ_BODY4,
LT_UD_BODY5 TYPE TABLE OF ZZTPP_ZSTZ_BODY5.
DATA LS_BTBHA TYPE TY_HEAD_BTBHA.
CLEAR: LW_UD_HEAD.
DATA: LS_MKPF TYPE GY_MKPF,
LS_MSEG TYPE GY_MSEG.
DATA: LR_STR1(6) VALUE '混凝土',
LR_STR2(4) VALUE '余料',
LR_STR6(4) VALUE '废棉',
LR_STR7(4) VALUE '尾料',
LR_STR3(4) VALUE '钢丝',
LR_STR4(6) VALUE '半成品',
LR_STR5(4) VALUE '棉卷'.
"专门负责261 262 122 123
"原材料
DATA :
I_MSEG TYPE STANDARD TABLE OF GY_MSEG,
WA_MSEG TYPE GY_MSEG.
"包装物
DATA :
I_BZW TYPE STANDARD TABLE OF GY_BZW,
WA_BZW TYPE GY_BZW.
* DATA LV_READ_FLAG TYPE C.
CLEAR :
* LV_READ_FLAG,
ZZTPP_ZSTZ_BODY1,
ZZTPP_ZSTZ_BODY2,
ZZTPP_ZSTZ_BODY4,
ZZTPP_ZSTZ_BODY5.
CHECK ZZTPP_ZSTZ_HEAD-BTBHA IS NOT INITIAL.
CLEAR :
ZZTPP_ZSTZ_HEAD-JZHAO,
ZZTPP_ZSTZ_HEAD-DBCCL,
ZZTPP_ZSTZ_HEAD-DBHSL,
ZZTPP_ZSTZ_HEAD-DBSHL,
ZZTPP_ZSTZ_HEAD-BB1YB,
ZZTPP_ZSTZ_HEAD-BZWZS,
ZZTPP_ZSTZ_HEAD-AVEJJ,
ZZTPP_ZSTZ_HEAD-SBQSJS,
ZZTPP_ZSTZ_HEAD-SBZZJS,
ZZTPP_ZSTZ_HEAD-SBJXSJ,
ZZTPP_ZSTZ_HEAD-QTTJSJ,
ZZTPP_ZSTZ_HEAD-XHZL,
ZZTPP_ZSTZ_HEAD-ZBBZ,
ZZTPP_ZSTZ_HEAD-ZJY,
ZZTPP_ZSTZ_HEAD-SCZG,
ZZTPP_ZSTZ_HEAD-MDBS,
ZZTPP_ZSTZ_HEAD-GZ,
ZZTPP_ZSTZ_HEAD-BUDAT.
REFRESH: LT_OLD_BODY1,
LT_OLD_BODY2,
LT_OLD_BODY4,
LT_NEW_BODY1,
LT_NEW_BODY2,
LT_NEW_BODY4.
* SELECT BTBHA YLDM YLPH LGORT INTO TABLE LT_OLD_BODY1
* FROM ZZTPP_ZSTZ_BODY1
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
*
* SELECT BTBHA FGPDM FGOPH YDDH FGDDH LGORT INTO TABLE LT_OLD_BODY2
* FROM ZZTPP_ZSTZ_BODY2
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
*
* SELECT BTBHA YLDM YLPH LGORT INTO TABLE LT_OLD_BODY4
* FROM ZZTPP_ZSTZ_BODY4
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
REFRESH: GT_MKPF,
GT_MSEG.
REFRESH: GT_BODY1,
GT_BODY2,
GT_BODY4,
GT_BODY5,
GT_BODY3.
*强制每次从数据库表中读取
DELETE FROM ZZTPP_ZSTZ_BODY1 WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA AND GZ = 'Y'.
DELETE FROM ZZTPP_ZSTZ_BODY2 WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA AND GZ = 'Y'.
DELETE FROM ZZTPP_ZSTZ_BODY5 WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA AND GZ = 'Y'.
DELETE FROM ZZTPP_ZSTZ_BODY4 WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA AND GZ = 'Y'.
SELECT MBLNR
MJAHR
BKTXT
FROM MKPF
INTO TABLE GT_MKPF
WHERE BKTXT = ZZTPP_ZSTZ_HEAD-BTBHA. "台班编号
IF GT_MKPF IS NOT INITIAL.
SORT GT_MKPF BY MBLNR MJAHR.
SELECT MSEG~MBLNR
MSEG~ZEILE
MSEG~MJAHR
MSEG~BWART
MSEG~MATNR
MSEG~CHARG "批号
MSEG~LGORT "库存地点
MSEG~MENGE "数量
MSEG~AUFNR "产品订单号
MSEG~SHKZG "借贷标示
FROM MSEG
INTO CORRESPONDING FIELDS OF TABLE GT_ZJ_MSEG
FOR ALL ENTRIES IN GT_MKPF
WHERE MSEG~MBLNR = GT_MKPF-MBLNR
AND MSEG~MJAHR = GT_MKPF-MJAHR.
ELSE.
MESSAGE S001(00) WITH '数据不存在!' DISPLAY LIKE 'E'.
ENDIF.
IF GT_MKPF IS NOT INITIAL.
CLEAR LW_UD_HEAD.
SELECT SINGLE * INTO LW_UD_HEAD
FROM ZZTPP_ZSTZ_HEAD
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
IF SY-SUBRC = 0.
ZZTPP_ZSTZ_HEAD-JZHAO = LW_UD_HEAD-JZHAO.
ZZTPP_ZSTZ_HEAD-DBCCL = LW_UD_HEAD-DBCCL.
ZZTPP_ZSTZ_HEAD-DBHSL = LW_UD_HEAD-DBHSL.
ZZTPP_ZSTZ_HEAD-DBSHL = LW_UD_HEAD-DBSHL.
ZZTPP_ZSTZ_HEAD-BB1YB = LW_UD_HEAD-BB1YB.
ZZTPP_ZSTZ_HEAD-BZWZS = LW_UD_HEAD-BZWZS.
ZZTPP_ZSTZ_HEAD-SBQSJS = LW_UD_HEAD-SBQSJS.
ZZTPP_ZSTZ_HEAD-SBZZJS = LW_UD_HEAD-SBZZJS.
ZZTPP_ZSTZ_HEAD-SBJXSJ = LW_UD_HEAD-SBJXSJ.
ZZTPP_ZSTZ_HEAD-QTTJSJ = LW_UD_HEAD-QTTJSJ.
ZZTPP_ZSTZ_HEAD-XHZL = LW_UD_HEAD-XHZL.
ZZTPP_ZSTZ_HEAD-ZBBZ = LW_UD_HEAD-ZBBZ.
ZZTPP_ZSTZ_HEAD-ZJY = LW_UD_HEAD-ZJY.
ZZTPP_ZSTZ_HEAD-SCZG = LW_UD_HEAD-SCZG.
ZZTPP_ZSTZ_HEAD-MDBS = LW_UD_HEAD-MDBS.
ZZTPP_ZSTZ_HEAD-GZ = LW_UD_HEAD-GZ.
ZZTPP_ZSTZ_HEAD-BUDAT = LW_UD_HEAD-BUDAT.
ZZTPP_ZSTZ_HEAD-AVEJJ = LW_UD_HEAD-AVEJJ.
ELSE.
LW_UD_HEAD-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
INSERT ZZTPP_ZSTZ_HEAD FROM LW_UD_HEAD.
ENDIF.
SORT GT_ZJ_MSEG BY MBLNR MJAHR BWART MATNR CHARG LGORT .
CLEAR LS_MSEG.
*---------------------------Collect合并相同行次---------------------------------
*无效代码
LOOP AT GT_ZJ_MSEG INTO LS_MSEG.
CLEAR: GW_MAKTX.
SELECT SINGLE MAKTX
INTO GW_MAKTX
FROM MAKT
WHERE MATNR = LS_MSEG-MATNR.
SEARCH GW_MAKTX FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤,放到余料表body4中
IF SY-SUBRC = 0.
CLEAR LS_MSEG-AUFNR.
CLEAR LS_MSEG-ZEILE.
COLLECT LS_MSEG INTO GT_MSEG.
CONTINUE.
ENDIF.
SEARCH GW_MAKTX FOR LR_STR2. "物料描述中含有’余料‘为废线,放到余料表body4中
IF SY-SUBRC = 0.
CLEAR LS_MSEG-AUFNR.
CLEAR LS_MSEG-ZEILE.
COLLECT LS_MSEG INTO GT_MSEG.
CONTINUE.
ENDIF.
SEARCH GW_MAKTX FOR LR_STR6. "物料描述中含有’废棉‘为废料,放到余料表body4中
IF SY-SUBRC = 0.
CLEAR LS_MSEG-AUFNR.
CLEAR LS_MSEG-ZEILE.
COLLECT LS_MSEG INTO GT_MSEG.
CONTINUE.
ENDIF.
SEARCH GW_MAKTX FOR LR_STR7. "物料描述中含有’尾料‘为废料,放到余料表body4中
IF SY-SUBRC = 0.
CLEAR LS_MSEG-AUFNR.
CLEAR LS_MSEG-ZEILE.
COLLECT LS_MSEG INTO GT_MSEG.
CONTINUE.
ENDIF.
IF LS_MSEG-MATNR+8(1) = '1'. "原材料
SEARCH GW_MAKTX FOR LR_STR3. "物料描述中含有’钢丝‘
IF SY-SUBRC <> 0.
IF LS_MSEG-MATNR+8 <> '1521015603' AND "紫铜棒的切割作业
LS_MSEG-MATNR+8 <> '1521015604'.
CLEAR LS_MSEG-AUFNR.
CLEAR LS_MSEG-ZEILE.
COLLECT LS_MSEG INTO GT_MSEG.
CONTINUE.
ENDIF.
ENDIF.
ELSEIF LS_MSEG-MATNR+8(1) = '3' OR LS_MSEG-MATNR+8(1) = '4'.
IF LS_MSEG-BWART = '261' OR LS_MSEG-BWART = '262'.
SEARCH GW_MAKTX FOR LR_STR4 . "物料描述中含有’半成品‘,则为原料
IF SY-SUBRC = 0.
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'T'.
CLEAR LS_MSEG-AUFNR.
CLEAR LS_MSEG-ZEILE.
COLLECT LS_MSEG INTO GT_MSEG.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
*其它
CLEAR LS_MSEG-ZEILE.
COLLECT LS_MSEG INTO GT_MSEG.
ENDLOOP.
"modify at 20121019 by maojian -- 不可以删除 包括309移库
* DELETE GT_MSEG WHERE BWART+0(1) = '3' OR BWART+0(1) = '4'.
*合并262 261
REFRESH I_MSEG.
LOOP AT GT_MSEG INTO LS_MSEG.
"原料
IF ( LS_MSEG-BWART = '261'
OR LS_MSEG-BWART = '262' )
AND LS_MSEG-MATNR+8(1) <> '5'
AND LS_MSEG-CHARG+0(1) <> '#'
AND LS_MSEG-CHARG+0(1) <> '^'.
* IF LS_MSEG-MATNR+8(1) = '3' AND ZZTPP_ZSTZ_HEAD-BTBHA+0(2) <> 'GI'.
* CONTINUE.
* ENDIF.
IF LS_MSEG-BWART = '261'.
LS_MSEG-MENGE = LS_MSEG-MENGE .
ELSEIF LS_MSEG-BWART = '262'.
LS_MSEG-MENGE = - LS_MSEG-MENGE .
ENDIF.
APPEND LS_MSEG TO I_MSEG.
"包装物
ELSEIF ( LS_MSEG-BWART = '261'
OR LS_MSEG-BWART = '262' )
AND LS_MSEG-MATNR+8(1) = '5'.
IF LS_MSEG-BWART = '261'.
LS_MSEG-MENGE = LS_MSEG-MENGE .
ELSEIF LS_MSEG-BWART = '262'.
LS_MSEG-MENGE = - LS_MSEG-MENGE .
ENDIF.
CLEAR WA_BZW.
MOVE-CORRESPONDING LS_MSEG TO WA_BZW.
APPEND WA_BZW TO I_BZW.
ENDIF.
ENDLOOP.
DELETE GT_MSEG WHERE ( BWART = '261' OR BWART = '262' )
AND MATNR+8(1) <> '5'
AND CHARG+0(1) <> '#'
AND CHARG+0(1) <> '^'.
DELETE GT_MSEG WHERE ( BWART = '261' OR BWART = '262' )
AND MATNR+8(1) = '5'.
* MATNR TYPE MSEG-MATNR, "成品代码
* CHARG TYPE MSEG-CHARG, "批号
* LGORT TYPE MSEG-LGORT,"库存地点
* MENGE TYPE MSEG-MENGE,"数量
* AUFNR TYPE MSEG-AUFNR, "产品订单号
* MBLNR TYPE MSEG-MBLNR,
* ZEILE TYPE MSEG-ZEILE,
* MJAHR TYPE MSEG-MJAHR,
* BWART TYPE MSEG-BWART,
SORT I_MSEG BY MATNR CHARG LGORT MBLNR ZEILE.
LOOP AT I_MSEG INTO WA_MSEG.
MOVE-CORRESPONDING WA_MSEG TO LS_MSEG.
AT END OF LGORT.
SUM.
WA_MSEG-MATNR = LS_MSEG-MATNR.
WA_MSEG-CHARG = LS_MSEG-CHARG.
WA_MSEG-LGORT = LS_MSEG-LGORT.
* wa_mseg-MENGE = LS_MSEG-MENGE.
* wa_mseg-AUFNR = LS_MSEG-AUFNR.
"是成品但不是GI班的发料的情况下,属于261的返工扣料。
IF LS_MSEG-MATNR+8(1) = '3' AND ZZTPP_ZSTZ_HEAD-BTBHA+0(2) <> 'GI'.
WA_MSEG-AUFNR = LS_MSEG-AUFNR.
ENDIF.
WA_MSEG-MBLNR = LS_MSEG-MBLNR.
WA_MSEG-ZEILE = LS_MSEG-ZEILE.
WA_MSEG-MJAHR = LS_MSEG-MJAHR.
* wa_mseg-BWART = LS_MSEG-BWART.
IF WA_MSEG-MENGE > 0.
WA_MSEG-BWART = '261'.
ELSE.
WA_MSEG-BWART = '262'.
ENDIF.
WA_MSEG-MENGE = ABS( WA_MSEG-MENGE ).
IF WA_MSEG-MENGE <> 0.
APPEND WA_MSEG TO GT_MSEG.
ENDIF.
ENDAT.
ENDLOOP.
SORT I_BZW BY MATNR CHARG LGORT AUFNR MBLNR ZEILE.
LOOP AT I_BZW INTO WA_BZW.
MOVE-CORRESPONDING WA_BZW TO LS_MSEG.
AT END OF AUFNR.
SUM.
WA_BZW-MATNR = LS_MSEG-MATNR.
WA_BZW-CHARG = LS_MSEG-CHARG.
WA_BZW-LGORT = LS_MSEG-LGORT.
WA_BZW-AUFNR = LS_MSEG-AUFNR.
WA_BZW-MBLNR = LS_MSEG-MBLNR.
WA_BZW-ZEILE = LS_MSEG-ZEILE.
WA_BZW-MJAHR = LS_MSEG-MJAHR.
IF WA_BZW-MENGE > 0.
WA_BZW-BWART = '261'.
ELSE.
WA_BZW-BWART = '262'.
ENDIF.
WA_BZW-MENGE = ABS( WA_BZW-MENGE ).
IF WA_BZW-MENGE <> 0.
CLEAR WA_MSEG.
MOVE-CORRESPONDING WA_BZW TO WA_MSEG.
APPEND WA_MSEG TO GT_MSEG.
ENDIF.
ENDAT.
ENDLOOP.
*-----------------------------------------------------------------*
* 处理显示
*-----------------------------------------------------------------*
LOOP AT GT_MSEG INTO LS_MSEG.
CLEAR: GW_MAKTX.
CLEAR: LW_UD_HEAD,
LW_UD_BODY1,
LW_UD_BODY2,
LW_UD_BODY3,
LW_UD_BODY4.
*取物料描述
SELECT SINGLE MAKTX
INTO GW_MAKTX
FROM MAKT
WHERE MATNR = LS_MSEG-MATNR.
*---------------波纤----------------------
SEARCH GW_MAKTX FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤,放到余料表body4中
IF SY-SUBRC = 0.
LW_UD_BODY4-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA. "台班班号
LW_UD_BODY4-YLDM = LS_MSEG-MATNR. "余料代码
LW_UD_BODY4-YLPH = LS_MSEG-CHARG. "余料批号
LW_UD_BODY4-YLMS = GW_MAKTX. "余料描述
IF LS_MSEG-BWART = '531' OR LS_MSEG-BWART = '101'.
LW_UD_BODY4-YLZL = LS_MSEG-MENGE. "余料重量
ELSEIF LS_MSEG-BWART = '532' OR LS_MSEG-BWART = '102'.
LW_UD_BODY4-YLZL = - LS_MSEG-MENGE.
"考虑到309转移的情况...
ELSEIF LS_MSEG-SHKZG = 'S'.
LW_UD_BODY4-YLZL = LS_MSEG-MENGE.
ELSE.
LW_UD_BODY4-YLZL = - LS_MSEG-MENGE.
ENDIF.
LW_UD_BODY4-MBLNR = LS_MSEG-MBLNR. "物料凭证编号
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY4-GZ = 'Y'. "过账标示
ENDIF.
LW_UD_BODY4-LGORT = LS_MSEG-LGORT. "库存地点
LW_FT-AUFNR = LS_MSEG-AUFNR. "生产订单号
LW_FT-MENGE = LS_MSEG-MENGE. "数量
APPEND LW_FT TO LT_FT4.
SELECT BTBHA YLDM YLPH LGORT
INTO TABLE LT_UD_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = LW_UD_BODY4-BTBHA
AND YLDM = LW_UD_BODY4-YLDM
AND YLPH = LW_UD_BODY4-YLPH
AND LGORT = LW_UD_BODY4-LGORT
*******Change at 2012-05-28 -------------------添加为主键
AND MBLNR = LW_UD_BODY4-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY4
SET BTBHA = LW_UD_BODY4-BTBHA
YLDM = LW_UD_BODY4-YLDM
YLMS = LW_UD_BODY4-YLMS
YLPH = LW_UD_BODY4-YLPH
YLZL = LW_UD_BODY4-YLZL
GZ = LW_UD_BODY4-GZ
MBLNR = LW_UD_BODY4-MBLNR
LGORT = LW_UD_BODY4-LGORT
WHERE BTBHA = LW_UD_BODY4-BTBHA
AND YLDM = LW_UD_BODY4-YLDM
AND YLPH = LW_UD_BODY4-YLPH
AND LGORT = LW_UD_BODY4-LGORT
AND GZ <> 'Y'.
ELSE.
*不同物料凭证的也可以进行添加
INSERT ZZTPP_ZSTZ_BODY4 FROM LW_UD_BODY4 .
ENDIF.
APPEND LW_UD_BODY4 TO GT_BODY4.
CONTINUE.
ENDIF.
*---------------尾料----------------------
SEARCH GW_MAKTX FOR LR_STR7. "物料描述中含有’尾料‘为废线,放到余料表body4中
IF SY-SUBRC = 0.
LW_UD_BODY4-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY4-YLDM = LS_MSEG-MATNR.
LW_UD_BODY4-YLPH = LS_MSEG-CHARG.
LW_UD_BODY4-YLMS = GW_MAKTX.
IF LS_MSEG-BWART = '531'.
LW_UD_BODY4-YLZL = LS_MSEG-MENGE .
ELSEIF LS_MSEG-BWART = '532'.
LW_UD_BODY4-YLZL = - LS_MSEG-MENGE .
ENDIF.
LW_UD_BODY4-MBLNR = LS_MSEG-MBLNR.
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY4-GZ = 'Y'.
ENDIF.
LW_UD_BODY4-LGORT = LS_MSEG-LGORT.
LW_FT-AUFNR = LS_MSEG-AUFNR.
LW_FT-MENGE = LS_MSEG-MENGE.
APPEND LW_FT TO LT_FT4.
SELECT BTBHA YLDM YLPH LGORT
INTO TABLE LT_UD_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = LW_UD_BODY4-BTBHA
AND YLDM = LW_UD_BODY4-YLDM
AND YLPH = LW_UD_BODY4-YLPH
AND LGORT = LW_UD_BODY4-LGORT
AND MBLNR = LW_UD_BODY4-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY4
SET BTBHA = LW_UD_BODY4-BTBHA
YLDM = LW_UD_BODY4-YLDM
YLMS = LW_UD_BODY4-YLMS
YLPH = LW_UD_BODY4-YLPH
YLZL = LW_UD_BODY4-YLZL
GZ = LW_UD_BODY4-GZ
MBLNR = LW_UD_BODY4-MBLNR
LGORT = LW_UD_BODY4-LGORT
WHERE BTBHA = LW_UD_BODY4-BTBHA
AND YLDM = LW_UD_BODY4-YLDM
AND YLPH = LW_UD_BODY4-YLPH
AND LGORT = LW_UD_BODY4-LGORT
AND GZ <> 'Y'.
ELSE.
INSERT ZZTPP_ZSTZ_BODY4 FROM LW_UD_BODY4.
ENDIF.
APPEND LW_UD_BODY4 TO GT_BODY4.
CONTINUE.
ENDIF.
*---------------余料----------------------
SEARCH GW_MAKTX FOR LR_STR2. "物料描述中含有’余料‘为废线,放到余料表body4中
IF SY-SUBRC = 0.
LW_UD_BODY4-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY4-YLDM = LS_MSEG-MATNR.
LW_UD_BODY4-YLPH = LS_MSEG-CHARG.
LW_UD_BODY4-YLMS = GW_MAKTX.
IF LS_MSEG-BWART = '531'.
LW_UD_BODY4-YLZL = LS_MSEG-MENGE .
ELSEIF LS_MSEG-BWART = '532'.
LW_UD_BODY4-YLZL = - LS_MSEG-MENGE .
ENDIF.
LW_UD_BODY4-MBLNR = LS_MSEG-MBLNR.
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY4-GZ = 'Y'.
ENDIF.
LW_UD_BODY4-LGORT = LS_MSEG-LGORT.
LW_FT-AUFNR = LS_MSEG-AUFNR.
LW_FT-MENGE = LS_MSEG-MENGE.
APPEND LW_FT TO LT_FT4.
SELECT BTBHA YLDM YLPH LGORT
INTO TABLE LT_UD_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = LW_UD_BODY4-BTBHA
AND YLDM = LW_UD_BODY4-YLDM
AND YLPH = LW_UD_BODY4-YLPH
AND LGORT = LW_UD_BODY4-LGORT
AND MBLNR = LW_UD_BODY4-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY4
SET BTBHA = LW_UD_BODY4-BTBHA
YLDM = LW_UD_BODY4-YLDM
YLMS = LW_UD_BODY4-YLMS
YLPH = LW_UD_BODY4-YLPH
YLZL = LW_UD_BODY4-YLZL
GZ = LW_UD_BODY4-GZ
MBLNR = LW_UD_BODY4-MBLNR
LGORT = LW_UD_BODY4-LGORT
WHERE BTBHA = LW_UD_BODY4-BTBHA
AND YLDM = LW_UD_BODY4-YLDM
AND YLPH = LW_UD_BODY4-YLPH
AND LGORT = LW_UD_BODY4-LGORT
AND GZ <> 'Y'.
ELSE.
INSERT ZZTPP_ZSTZ_BODY4 FROM LW_UD_BODY4.
ENDIF.
APPEND LW_UD_BODY4 TO GT_BODY4.
CONTINUE.
ENDIF.
*---------------废棉----------------------
IF LS_MSEG-MATNR+8 = '3010300000'
OR LS_MSEG-MATNR+8 = '3010400000'
OR LS_MSEG-MATNR+8 = '3100100000'
OR LS_MSEG-MATNR+8 = '3100300000'
OR LS_MSEG-MATNR+8 = '3100900000'.
LW_UD_BODY4-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY4-YLDM = LS_MSEG-MATNR.
LW_UD_BODY4-YLPH = LS_MSEG-CHARG.
LW_UD_BODY4-YLMS = GW_MAKTX.
IF LS_MSEG-BWART = '531'.
LW_UD_BODY4-YLZL = LS_MSEG-MENGE .
ELSEIF LS_MSEG-BWART = '532'.
LW_UD_BODY4-YLZL = - LS_MSEG-MENGE .
ENDIF.
LW_UD_BODY4-MBLNR = LS_MSEG-MBLNR.
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY4-GZ = 'Y'.
ENDIF.
LW_UD_BODY4-LGORT = LS_MSEG-LGORT.
LW_FT-AUFNR = LS_MSEG-AUFNR.
LW_FT-MENGE = LS_MSEG-MENGE.
APPEND LW_FT TO LT_FT4.
SELECT BTBHA YLDM YLPH LGORT
INTO TABLE LT_UD_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = LW_UD_BODY4-BTBHA
AND YLDM = LW_UD_BODY4-YLDM
AND YLPH = LW_UD_BODY4-YLPH
AND LGORT = LW_UD_BODY4-LGORT
AND MBLNR = LW_UD_BODY4-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY4
SET BTBHA = LW_UD_BODY4-BTBHA
YLDM = LW_UD_BODY4-YLDM
YLMS = LW_UD_BODY4-YLMS
YLPH = LW_UD_BODY4-YLPH
YLZL = LW_UD_BODY4-YLZL
GZ = LW_UD_BODY4-GZ
MBLNR = LW_UD_BODY4-MBLNR
LGORT = LW_UD_BODY4-LGORT
WHERE BTBHA = LW_UD_BODY4-BTBHA
AND YLDM = LW_UD_BODY4-YLDM
AND YLPH = LW_UD_BODY4-YLPH
AND LGORT = LW_UD_BODY4-LGORT
AND GZ <> 'Y'.
ELSE.
INSERT ZZTPP_ZSTZ_BODY4 FROM LW_UD_BODY4.
ENDIF.
APPEND LW_UD_BODY4 TO GT_BODY4.
CONTINUE.
ENDIF.
*---------------包装物----------------------
IF LS_MSEG-MATNR+8(1) = '5'.
LW_UD_BODY5-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA."台班班号
LW_UD_BODY5-SCDDH = LS_MSEG-AUFNR. "生产订单号
LW_UD_BODY5-BZWLH = LS_MSEG-MATNR. "物料代码
LW_UD_BODY5-MAKTX = GW_MAKTX. "物料描述
LW_UD_BODY5-BZWPH = LS_MSEG-CHARG. "批号
IF LS_MSEG-BWART = '261'.
LW_UD_BODY5-BZWSL = LS_MSEG-MENGE. "数量
ELSE.
LW_UD_BODY5-BZWSL = - LS_MSEG-MENGE. "数量
ENDIF.
LW_UD_BODY5-MBLNR = LS_MSEG-MBLNR. "物料凭证编号
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY5-GZ = 'Y'. "过账标示
ENDIF.
LW_UD_BODY5-LGORT = LS_MSEG-LGORT. "库存地点
APPEND LW_UD_BODY5 TO GT_BODY5.
SELECT BTBHA SCDDH BZWLH BZWPH LGORT
INTO TABLE LT_UD_BODY5
FROM ZZTPP_ZSTZ_BODY5
WHERE BTBHA = LW_UD_BODY5-BTBHA
AND SCDDH = LW_UD_BODY5-SCDDH
AND BZWLH = LW_UD_BODY5-BZWLH
AND BZWPH = LW_UD_BODY5-BZWPH
AND LGORT = LW_UD_BODY5-LGORT
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY5
SET BTBHA = LW_UD_BODY5-BTBHA
SCDDH = LW_UD_BODY5-SCDDH
BZWLH = LW_UD_BODY5-BZWLH
MAKTX = LW_UD_BODY5-MAKTX
BZWPH = LW_UD_BODY5-BZWPH
BZWSL = LW_UD_BODY5-BZWSL
MBLNR = LW_UD_BODY5-MBLNR
LGORT = LW_UD_BODY5-LGORT
GZ = 'Y'
WHERE BTBHA = LW_UD_BODY5-BTBHA
AND SCDDH = LW_UD_BODY5-SCDDH
AND BZWLH = LW_UD_BODY5-BZWLH
AND BZWPH = LW_UD_BODY5-BZWPH
AND LGORT = LW_UD_BODY5-LGORT.
ELSE.
INSERT ZZTPP_ZSTZ_BODY5 FROM LW_UD_BODY5 .
ENDIF.
CONTINUE.
ENDIF.
*---------------------切割紫铜棒工艺--------------------------
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'Q'.
IF LS_MSEG-MATNR+8 = '1521015602'.
*原材料:紫铜棒3000mm
LW_UD_BODY1-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA."台班班号
LW_UD_BODY1-YLDM = LS_MSEG-MATNR. "原料代码
LW_UD_BODY1-YLMS = GW_MAKTX. "原料描述
LW_UD_BODY1-YLPH = LS_MSEG-CHARG. "原料批号
IF LS_MSEG-BWART = '261'.
LW_UD_BODY1-ZL = LS_MSEG-MENGE. "重量
ELSE.
LW_UD_BODY1-ZL = - LS_MSEG-MENGE. "重量
ENDIF.
LW_UD_BODY1-MBLNR = LS_MSEG-MBLNR. "物料凭证编号
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY1-GZ = 'Y'. "过账标示
ENDIF.
LW_UD_BODY1-LGORT = LS_MSEG-LGORT. "库存地点
CLEAR LW_FT.
LW_FT-AUFNR = LS_MSEG-AUFNR.
LW_FT-MENGE = LS_MSEG-MENGE.
APPEND LW_FT TO LT_FT1.
APPEND LW_UD_BODY1 TO GT_BODY1.
SELECT BTBHA YLDM YLPH LGORT
INTO TABLE LT_UD_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = LW_UD_BODY1-BTBHA
AND YLDM = LW_UD_BODY1-YLDM
AND YLPH = LW_UD_BODY1-YLPH
AND LGORT = LW_UD_BODY1-LGORT
AND MBLNR = LW_UD_BODY1-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY1
SET BTBHA = LW_UD_BODY1-BTBHA
YLDM = LW_UD_BODY1-YLDM
YLMS = LW_UD_BODY1-YLMS
YLPH = LW_UD_BODY1-YLPH
ZL = LW_UD_BODY1-ZL
GZ = LW_UD_BODY1-GZ
MBLNR = LW_UD_BODY1-MBLNR
LGORT = LW_UD_BODY1-LGORT
WHERE BTBHA = LW_UD_BODY1-BTBHA
AND YLDM = LW_UD_BODY1-YLDM
AND YLPH = LW_UD_BODY1-YLPH
AND LGORT = LW_UD_BODY1-LGORT
AND GZ <> 'Y'.
ELSE.
INSERT ZZTPP_ZSTZ_BODY1 FROM LW_UD_BODY1 .
ENDIF.
CONTINUE.
ELSEIF LS_MSEG-MATNR+8 = '1521015603' OR
LS_MSEG-MATNR+8 = '1521015604'.
*切割后的半成品紫铜棒
IF LS_MSEG-BWART = '101'.
IF LS_MSEG-CHARG+0(1) ='#'. "待检品批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-DJYPZL = LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ELSEIF LS_MSEG-CHARG+0(1) ='^'. "不合格批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-BHGPZL = LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ELSE. "合格批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-HGPZL = LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ENDIF.
ELSEIF LS_MSEG-BWART = '102'.
IF LS_MSEG-CHARG+0(1) ='#'. "待检品批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-DJYPZL = - LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ELSEIF LS_MSEG-CHARG+0(1) ='^'. "不合格批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-BHGPZL = - LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ELSE. "合格批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-HGPZL = - LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ENDIF.
ENDIF.
LW_UD_BODY3-CPCCHEJ = LW_UD_BODY3-HGPZL + LW_UD_BODY3-BHGPZL + LW_UD_BODY3-DJYPZL.
APPEND LW_UD_BODY3 TO GT_BODY3.
CONTINUE.
ENDIF.
ENDIF.
*-------------------------拉丝--------------------------------
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'L'.
SEARCH GW_MAKTX FOR C_LASI.
IF SY-SUBRC = 0.
*原材料
LW_UD_BODY1-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA."台班班号
LW_UD_BODY1-YLDM = LS_MSEG-MATNR. "原料代码
LW_UD_BODY1-YLMS = GW_MAKTX. "原料描述
LW_UD_BODY1-YLPH = LS_MSEG-CHARG. "原料批号
IF LS_MSEG-BWART = '261'.
LW_UD_BODY1-ZL = LS_MSEG-MENGE. "重量
ELSE.
LW_UD_BODY1-ZL = - LS_MSEG-MENGE. "重量
ENDIF.
LW_UD_BODY1-MBLNR = LS_MSEG-MBLNR. "物料凭证编号
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY1-GZ = 'Y'. "过账标示
ENDIF.
LW_UD_BODY1-LGORT = LS_MSEG-LGORT. "库存地点
CLEAR LW_FT.
LW_FT-AUFNR = LS_MSEG-AUFNR.
LW_FT-MENGE = LS_MSEG-MENGE.
APPEND LW_FT TO LT_FT1.
APPEND LW_UD_BODY1 TO GT_BODY1.
SELECT BTBHA YLDM YLPH LGORT
INTO TABLE LT_UD_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = LW_UD_BODY1-BTBHA
AND YLDM = LW_UD_BODY1-YLDM
AND YLPH = LW_UD_BODY1-YLPH
AND LGORT = LW_UD_BODY1-LGORT
*----------------Add at 20120722
AND MBLNR = LW_UD_BODY1-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY1
SET BTBHA = LW_UD_BODY1-BTBHA
YLDM = LW_UD_BODY1-YLDM
YLMS = LW_UD_BODY1-YLMS
YLPH = LW_UD_BODY1-YLPH
ZL = LW_UD_BODY1-ZL
GZ = LW_UD_BODY1-GZ
MBLNR = LW_UD_BODY1-MBLNR
LGORT = LW_UD_BODY1-LGORT
WHERE BTBHA = LW_UD_BODY1-BTBHA
AND YLDM = LW_UD_BODY1-YLDM
AND YLPH = LW_UD_BODY1-YLPH
AND LGORT = LW_UD_BODY1-LGORT
AND GZ <> 'Y'.
ELSE.
INSERT ZZTPP_ZSTZ_BODY1 FROM LW_UD_BODY1 .
ENDIF.
CONTINUE.
ELSE.
*合格品
IF LS_MSEG-BWART = '101'.
IF LS_MSEG-CHARG+0(1) ='#'. "待检品批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-DJYPZL = LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ELSEIF LS_MSEG-CHARG+0(1) ='^'. "不合格批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-BHGPZL = LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ELSE. "合格批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-HGPZL = LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ENDIF.
ELSEIF LS_MSEG-BWART = '102'.
IF LS_MSEG-CHARG+0(1) ='#'. "待检品批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-DJYPZL = - LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ELSEIF LS_MSEG-CHARG+0(1) ='^'. "不合格批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-BHGPZL = - LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ELSE. "合格批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-HGPZL = - LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ENDIF.
ENDIF.
LW_UD_BODY3-CPCCHEJ = LW_UD_BODY3-HGPZL + LW_UD_BODY3-BHGPZL + LW_UD_BODY3-DJYPZL.
APPEND LW_UD_BODY3 TO GT_BODY3.
CONTINUE.
ENDIF.
ENDIF.
*-------------------------------------------------------------
*---------------原材料----------------------
IF LS_MSEG-MATNR+8(1) = '1'.
* SEARCH GW_MAKTX FOR LR_STR3. "物料描述中含有’钢丝‘
* IF SY-SUBRC <> 0.
* IF LS_MSEG-BWART = '101' "GR直接收货
* OR LS_MSEG-BWART = '102' "冲销直接收货
* OR LS_MSEG-BWART = '122'. "向供应商退货
*
* IF LS_MSEG-CHARG+0(1) ='#'. "待检品批号
* LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA."台班班号
* LW_UD_BODY3-MATNR = LS_MSEG-MATNR. "成品代码
* LW_UD_BODY3-MAKTX = GW_MAKTX. "成品描述
* LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR. "产品订单号
* LW_UD_BODY3-DJYPZL = LS_MSEG-MENGE . "待检品重量
* LW_UD_BODY3-LGORT = LS_MSEG-LGORT. "库存地点
* ELSEIF LS_MSEG-CHARG+0(1) ='^'. "不合格批号
* LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA."台班班号
* LW_UD_BODY3-MATNR = LS_MSEG-MATNR. "成品代码
* LW_UD_BODY3-MAKTX = GW_MAKTX. "成品描述
* LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR. "产品订单号
* LW_UD_BODY3-BHGPZL = LS_MSEG-MENGE . "不合格品重量
* LW_UD_BODY3-LGORT = LS_MSEG-LGORT. "库存地点
* ELSE. "合格批号
* LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA."台班班号
* LW_UD_BODY3-MATNR = LS_MSEG-MATNR. "成品代码
* LW_UD_BODY3-MAKTX = GW_MAKTX. "成品描述
* LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR. "产品订单号
* LW_UD_BODY3-HGPZL = LS_MSEG-MENGE . "合格品重量
* LW_UD_BODY3-LGORT = LS_MSEG-LGORT. "库存地点
* ENDIF.
* LW_UD_BODY3-CPCCHEJ = LW_UD_BODY3-HGPZL + LW_UD_BODY3-BHGPZL + LW_UD_BODY3-DJYPZL.
* APPEND LW_UD_BODY3 TO GT_BODY3.
* ENDIF.
* CONTINUE.
* ENDIF.
*原材料
LW_UD_BODY1-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA."台班班号
LW_UD_BODY1-YLDM = LS_MSEG-MATNR. "原料代码
LW_UD_BODY1-YLMS = GW_MAKTX. "原料描述
LW_UD_BODY1-YLPH = LS_MSEG-CHARG. "原料批号
IF LS_MSEG-BWART = '261'.
LW_UD_BODY1-ZL = LS_MSEG-MENGE. "重量
ELSE.
LW_UD_BODY1-ZL = - LS_MSEG-MENGE. "重量
ENDIF.
LW_UD_BODY1-MBLNR = LS_MSEG-MBLNR. "物料凭证编号
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY1-GZ = 'Y'. "过账标示
ENDIF.
LW_UD_BODY1-LGORT = LS_MSEG-LGORT. "库存地点
CLEAR LW_FT.
LW_FT-AUFNR = LS_MSEG-AUFNR.
LW_FT-MENGE = LS_MSEG-MENGE.
APPEND LW_FT TO LT_FT1.
APPEND LW_UD_BODY1 TO GT_BODY1.
SELECT BTBHA YLDM YLPH LGORT
INTO TABLE LT_UD_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = LW_UD_BODY1-BTBHA
AND YLDM = LW_UD_BODY1-YLDM
AND YLPH = LW_UD_BODY1-YLPH
AND LGORT = LW_UD_BODY1-LGORT
*----------------Add at 20120722
AND MBLNR = LW_UD_BODY1-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY1
SET BTBHA = LW_UD_BODY1-BTBHA
YLDM = LW_UD_BODY1-YLDM
YLMS = LW_UD_BODY1-YLMS
YLPH = LW_UD_BODY1-YLPH
ZL = LW_UD_BODY1-ZL
GZ = LW_UD_BODY1-GZ
MBLNR = LW_UD_BODY1-MBLNR
LGORT = LW_UD_BODY1-LGORT
WHERE BTBHA = LW_UD_BODY1-BTBHA
AND YLDM = LW_UD_BODY1-YLDM
AND YLPH = LW_UD_BODY1-YLPH
AND LGORT = LW_UD_BODY1-LGORT
AND GZ <> 'Y'.
ELSE.
INSERT ZZTPP_ZSTZ_BODY1 FROM LW_UD_BODY1 .
ENDIF.
*---------------原料 返工品 成品----------------------
ELSEIF LS_MSEG-MATNR+8(1) = '3' OR LS_MSEG-MATNR+8(1) = '4'.
IF LS_MSEG-BWART = '261' "工单领料
OR LS_MSEG-BWART = '262'. "工单退料
SEARCH GW_MAKTX FOR LR_STR4 . "物料描述中含有’半成品‘,则为原料
*退火棉 半成品 -- 原材料
IF SY-SUBRC = 0.
*原材料
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'T'. "退火棉
LW_UD_BODY1-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY1-YLDM = LS_MSEG-MATNR.
LW_UD_BODY1-YLMS = GW_MAKTX.
LW_UD_BODY1-YLPH = LS_MSEG-CHARG.
IF LS_MSEG-BWART = '261'.
LW_UD_BODY1-ZL = LS_MSEG-MENGE.
ELSE.
LW_UD_BODY1-ZL = - LS_MSEG-MENGE.
ENDIF.
LW_UD_BODY1-MBLNR = LS_MSEG-MBLNR.
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY1-GZ = 'Y'.
ENDIF.
LW_UD_BODY1-LGORT = LS_MSEG-LGORT.
CLEAR LW_FT.
LW_FT-AUFNR = LS_MSEG-AUFNR.
LW_FT-MENGE = LS_MSEG-MENGE.
APPEND LW_FT TO LT_FT1.
APPEND LW_UD_BODY1 TO GT_BODY1.
SELECT BTBHA YLDM YLPH LGORT
INTO TABLE LT_UD_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = LW_UD_BODY1-BTBHA
AND YLDM = LW_UD_BODY1-YLDM
AND YLPH = LW_UD_BODY1-YLPH
AND LGORT = LW_UD_BODY1-LGORT
******Change at 2012-05-28
AND MBLNR = LW_UD_BODY1-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY1
SET BTBHA = LW_UD_BODY1-BTBHA
YLDM = LW_UD_BODY1-YLDM
YLMS = LW_UD_BODY1-YLMS
YLPH = LW_UD_BODY1-YLPH
ZL = LW_UD_BODY1-ZL
GZ = LW_UD_BODY1-GZ
MBLNR = LW_UD_BODY1-MBLNR
LGORT = LW_UD_BODY1-LGORT
WHERE BTBHA = LW_UD_BODY1-BTBHA
AND YLDM = LW_UD_BODY1-YLDM
AND YLPH = LW_UD_BODY1-YLPH
AND LGORT = LW_UD_BODY1-LGORT
AND GZ <> 'Y'.
ELSE.
INSERT ZZTPP_ZSTZ_BODY1 FROM LW_UD_BODY1 .
ENDIF.
CONTINUE.
ELSE.
*返工品
LW_UD_BODY2-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA."台班班号
LW_UD_BODY2-FGPDM = LS_MSEG-MATNR. "返工品代码
LW_UD_BODY2-FGOPH = LS_MSEG-CHARG. "返工品批号
LW_UD_BODY2-FGPMS = GW_MAKTX. "返工品描述
CLEAR GW_AUFNR.
SELECT SINGLE AUFNR
FROM MSEG
INTO GW_AUFNR
WHERE MATNR = LS_MSEG-MATNR
AND BWART = '101'
AND CHARG = LS_MSEG-CHARG.
IF SY-SUBRC <> 0.
"转储的情况考虑在内
CLEAR GW_CHARG.
SELECT SINGLE UMCHA
FROM MSEG
INTO GW_CHARG
WHERE MATNR = LS_MSEG-MATNR
AND BWART = '309'
AND CHARG = LS_MSEG-CHARG.
CLEAR GW_AUFNR.
SELECT SINGLE AUFNR
FROM MSEG
INTO GW_AUFNR
WHERE MATNR = LS_MSEG-MATNR
AND BWART = '101'
AND CHARG = GW_CHARG.
ENDIF.
LW_UD_BODY2-YDDH = GW_AUFNR. "原订单号
LW_UD_BODY2-FGDDH = LS_MSEG-AUFNR. "返工到订单号
IF LS_MSEG-BWART = '261' OR LS_MSEG-BWART = '122'.
LW_UD_BODY2-ZL = LS_MSEG-MENGE . "重量
ELSE.
LW_UD_BODY2-ZL = - LS_MSEG-MENGE . "重量
ENDIF.
LW_UD_BODY2-MBLNR = LS_MSEG-MBLNR. "物料凭证编号
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY2-GZ = 'Y'. "过账标示
ENDIF.
LW_UD_BODY2-LGORT = LS_MSEG-LGORT. "库存地点
CLEAR LW_FT.
LW_FT-AUFNR = LS_MSEG-AUFNR.
LW_FT-MENGE = LS_MSEG-MENGE.
APPEND LW_FT TO LT_FT2.
SELECT BTBHA FGPDM FGOPH FGDDH LGORT
INTO TABLE LT_UD_BODY2
FROM ZZTPP_ZSTZ_BODY2
WHERE BTBHA = LW_UD_BODY2-BTBHA
AND FGPDM = LW_UD_BODY2-FGPDM
AND FGOPH = LW_UD_BODY2-FGOPH
AND YDDH = LW_UD_BODY2-YDDH
AND FGDDH = LW_UD_BODY2-FGDDH
AND LGORT = LW_UD_BODY2-LGORT
******Change at 2012-09-28
AND MBLNR = LW_UD_BODY2-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY2
SET BTBHA = LW_UD_BODY2-BTBHA
FGPDM = LW_UD_BODY2-FGPDM
FGPMS = LW_UD_BODY2-FGPMS
FGOPH = LW_UD_BODY2-FGOPH
FGDDH = LW_UD_BODY2-FGDDH
YDDH = LW_UD_BODY2-YDDH
ZL = LW_UD_BODY2-ZL
GZ = LW_UD_BODY2-GZ
MBLNR = LW_UD_BODY2-MBLNR
LGORT = LW_UD_BODY2-LGORT
WHERE BTBHA = LW_UD_BODY2-BTBHA
AND FGPDM = LW_UD_BODY2-FGPDM
AND FGOPH = LW_UD_BODY2-FGOPH
AND YDDH = LW_UD_BODY2-YDDH
AND FGDDH = LW_UD_BODY2-FGDDH
AND LGORT = LW_UD_BODY2-LGORT
AND GZ <> 'Y'.
ELSE.
INSERT ZZTPP_ZSTZ_BODY2 FROM LW_UD_BODY2.
ENDIF.
APPEND LW_UD_BODY2 TO GT_BODY2.
CONTINUE.
ENDIF.
ELSE.
*返工品
IF LS_MSEG-CHARG+0(1) = '#' OR LS_MSEG-CHARG+0(1) = '^'.
LW_UD_BODY2-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA."台班班号
LW_UD_BODY2-FGPDM = LS_MSEG-MATNR. "返工品代码
LW_UD_BODY2-FGOPH = LS_MSEG-CHARG. "返工品批号
LW_UD_BODY2-FGPMS = GW_MAKTX. "返工品描述
CLEAR GW_AUFNR.
SELECT SINGLE AUFNR
FROM MSEG
INTO GW_AUFNR
WHERE MATNR = LS_MSEG-MATNR
AND BWART = '101'
AND CHARG = LS_MSEG-CHARG.
IF SY-SUBRC <> 0.
"转储的情况考虑在内
CLEAR GW_CHARG.
SELECT SINGLE UMCHA
FROM MSEG
INTO GW_CHARG
WHERE MATNR = LS_MSEG-MATNR
AND BWART = '309'
AND CHARG = LS_MSEG-CHARG.
CLEAR GW_AUFNR.
SELECT SINGLE AUFNR
FROM MSEG
INTO GW_AUFNR
WHERE MATNR = LS_MSEG-MATNR
AND BWART = '101'
AND CHARG = GW_CHARG.
ENDIF.
LW_UD_BODY2-YDDH = GW_AUFNR. "原订单号
LW_UD_BODY2-FGDDH = LS_MSEG-AUFNR. "返工到订单号
IF LS_MSEG-BWART = '261' OR LS_MSEG-BWART = '122'.
LW_UD_BODY2-ZL = LS_MSEG-MENGE . "重量
ELSE.
LW_UD_BODY2-ZL = - LS_MSEG-MENGE . "重量
ENDIF.
LW_UD_BODY2-MBLNR = LS_MSEG-MBLNR. "物料凭证编号
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY2-GZ = 'Y'. "过账标示
ENDIF.
LW_UD_BODY2-LGORT = LS_MSEG-LGORT. "库存地点
CLEAR LW_FT.
LW_FT-AUFNR = LS_MSEG-AUFNR.
LW_FT-MENGE = LS_MSEG-MENGE.
APPEND LW_FT TO LT_FT2.
SELECT BTBHA FGPDM FGOPH FGDDH LGORT
INTO TABLE LT_UD_BODY2
FROM ZZTPP_ZSTZ_BODY2
WHERE BTBHA = LW_UD_BODY2-BTBHA
AND FGPDM = LW_UD_BODY2-FGPDM
AND FGOPH = LW_UD_BODY2-FGOPH
AND YDDH = LW_UD_BODY2-YDDH
AND FGDDH = LW_UD_BODY2-FGDDH
AND LGORT = LW_UD_BODY2-LGORT
******Change at 2012-09-28
AND MBLNR = LW_UD_BODY2-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY2
SET BTBHA = LW_UD_BODY2-BTBHA
FGPDM = LW_UD_BODY2-FGPDM
FGPMS = LW_UD_BODY2-FGPMS
FGOPH = LW_UD_BODY2-FGOPH
FGDDH = LW_UD_BODY2-FGDDH
YDDH = LW_UD_BODY2-YDDH
ZL = LW_UD_BODY2-ZL
GZ = LW_UD_BODY2-GZ
MBLNR = LW_UD_BODY2-MBLNR
LGORT = LW_UD_BODY2-LGORT
WHERE BTBHA = LW_UD_BODY2-BTBHA
AND FGPDM = LW_UD_BODY2-FGPDM
AND FGOPH = LW_UD_BODY2-FGOPH
AND YDDH = LW_UD_BODY2-YDDH
AND FGDDH = LW_UD_BODY2-FGDDH
AND LGORT = LW_UD_BODY2-LGORT
AND GZ <> 'Y'.
ELSE.
INSERT ZZTPP_ZSTZ_BODY2 FROM LW_UD_BODY2.
ENDIF.
APPEND LW_UD_BODY2 TO GT_BODY2.
CONTINUE.
ELSE.
*原材料 GI 班 棉卷
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(2) = 'GI'.
LW_UD_BODY1-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY1-YLDM = LS_MSEG-MATNR.
LW_UD_BODY1-YLMS = GW_MAKTX.
LW_UD_BODY1-YLPH = LS_MSEG-CHARG.
IF LS_MSEG-BWART = '261'.
LW_UD_BODY1-ZL = LS_MSEG-MENGE.
ELSE.
LW_UD_BODY1-ZL = - LS_MSEG-MENGE.
ENDIF.
LW_UD_BODY1-MBLNR = LS_MSEG-MBLNR.
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY1-GZ = 'Y'.
ENDIF.
LW_UD_BODY1-LGORT = LS_MSEG-LGORT.
CLEAR LW_FT.
LW_FT-AUFNR = LS_MSEG-AUFNR.
LW_FT-MENGE = LS_MSEG-MENGE.
APPEND LW_FT TO LT_FT1.
APPEND LW_UD_BODY1 TO GT_BODY1.
SELECT BTBHA YLDM YLPH LGORT
INTO TABLE LT_UD_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = LW_UD_BODY1-BTBHA
AND YLDM = LW_UD_BODY1-YLDM
AND YLPH = LW_UD_BODY1-YLPH
AND LGORT = LW_UD_BODY1-LGORT
*----------------Add at 20120722
AND MBLNR = LW_UD_BODY1-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY1
SET BTBHA = LW_UD_BODY1-BTBHA
YLDM = LW_UD_BODY1-YLDM
YLMS = LW_UD_BODY1-YLMS
YLPH = LW_UD_BODY1-YLPH
ZL = LW_UD_BODY1-ZL
GZ = LW_UD_BODY1-GZ
MBLNR = LW_UD_BODY1-MBLNR
LGORT = LW_UD_BODY1-LGORT
WHERE BTBHA = LW_UD_BODY1-BTBHA
AND YLDM = LW_UD_BODY1-YLDM
AND YLPH = LW_UD_BODY1-YLPH
AND LGORT = LW_UD_BODY1-LGORT
AND GZ <> 'Y'.
ELSE.
INSERT ZZTPP_ZSTZ_BODY1 FROM LW_UD_BODY1 .
ENDIF.
CONTINUE.
ELSE.
*返工品
* LW_UD_BODY2-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* LW_UD_BODY2-FGPDM = LS_MSEG-MATNR.
* LW_UD_BODY2-FGOPH = LS_MSEG-CHARG.
* LW_UD_BODY2-FGPMS = GW_MAKTX.
* CLEAR GW_AUFNR.
* SELECT SINGLE AUFNR
* FROM MSEG
* INTO GW_AUFNR
* WHERE MATNR = LS_MSEG-MATNR
* AND BWART = '101'
* AND CHARG = LS_MSEG-CHARG.
* LW_UD_BODY2-YDDH = GW_AUFNR.
* LW_UD_BODY2-FGDDH = LS_MSEG-AUFNR.
*
* IF LS_MSEG-BWART = '261' OR LS_MSEG-BWART = '122'.
* LW_UD_BODY2-ZL = LS_MSEG-MENGE .
* ELSE.
* LW_UD_BODY2-ZL = - LS_MSEG-MENGE .
* ENDIF.
*
* LW_UD_BODY2-MBLNR = LS_MSEG-MBLNR.
* IF LS_MSEG-MBLNR IS NOT INITIAL.
* LW_UD_BODY2-GZ = 'Y'.
* ENDIF.
* LW_UD_BODY2-LGORT = LS_MSEG-LGORT.
*
* CLEAR LW_FT.
* LW_FT-AUFNR = LS_MSEG-AUFNR.
* LW_FT-MENGE = LS_MSEG-MENGE.
* APPEND LW_FT TO LT_FT2.
*
* SELECT BTBHA FGPDM FGOPH FGDDH LGORT
* INTO TABLE LT_UD_BODY2
* FROM ZZTPP_ZSTZ_BODY2
* WHERE BTBHA = LW_UD_BODY2-BTBHA
* AND FGPDM = LW_UD_BODY2-FGPDM
* AND FGOPH = LW_UD_BODY2-FGOPH
* AND YDDH = LW_UD_BODY2-YDDH
* AND FGDDH = LW_UD_BODY2-FGDDH
* AND LGORT = LW_UD_BODY2-LGORT
*******Change at 2012-09-28
* AND MBLNR = LW_UD_BODY2-MBLNR
* .
* IF SY-SUBRC = 0 .
* UPDATE ZZTPP_ZSTZ_BODY2
* SET BTBHA = LW_UD_BODY2-BTBHA
* FGPDM = LW_UD_BODY2-FGPDM
* FGPMS = LW_UD_BODY2-FGPMS
* FGOPH = LW_UD_BODY2-FGOPH
* FGDDH = LW_UD_BODY2-FGDDH
* YDDH = LW_UD_BODY2-YDDH
* ZL = LW_UD_BODY2-ZL
* GZ = LW_UD_BODY2-GZ
* MBLNR = LW_UD_BODY2-MBLNR
* LGORT = LW_UD_BODY2-LGORT
* WHERE BTBHA = LW_UD_BODY2-BTBHA
* AND FGPDM = LW_UD_BODY2-FGPDM
* AND FGOPH = LW_UD_BODY2-FGOPH
* AND YDDH = LW_UD_BODY2-YDDH
* AND FGDDH = LW_UD_BODY2-FGDDH
* AND LGORT = LW_UD_BODY2-LGORT
* AND GZ <> 'Y'.
* ELSE.
* INSERT ZZTPP_ZSTZ_BODY2 FROM LW_UD_BODY2.
* ENDIF.
* APPEND LW_UD_BODY2 TO GT_BODY2.
* CONTINUE.
*这样的情况2014-03-19修改,算成原材料
LW_UD_BODY1-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY1-YLDM = LS_MSEG-MATNR.
LW_UD_BODY1-YLMS = GW_MAKTX.
LW_UD_BODY1-YLPH = LS_MSEG-CHARG.
IF LS_MSEG-BWART = '261'.
LW_UD_BODY1-ZL = LS_MSEG-MENGE.
ELSE.
LW_UD_BODY1-ZL = - LS_MSEG-MENGE.
ENDIF.
LW_UD_BODY1-MBLNR = LS_MSEG-MBLNR.
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY1-GZ = 'Y'.
ENDIF.
LW_UD_BODY1-LGORT = LS_MSEG-LGORT.
CLEAR LW_FT.
LW_FT-AUFNR = LS_MSEG-AUFNR.
LW_FT-MENGE = LS_MSEG-MENGE.
APPEND LW_FT TO LT_FT1.
APPEND LW_UD_BODY1 TO GT_BODY1.
SELECT BTBHA YLDM YLPH LGORT
INTO TABLE LT_UD_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = LW_UD_BODY1-BTBHA
AND YLDM = LW_UD_BODY1-YLDM
AND YLPH = LW_UD_BODY1-YLPH
AND LGORT = LW_UD_BODY1-LGORT
*----------------Add at 20120722
AND MBLNR = LW_UD_BODY1-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY1
SET BTBHA = LW_UD_BODY1-BTBHA
YLDM = LW_UD_BODY1-YLDM
YLMS = LW_UD_BODY1-YLMS
YLPH = LW_UD_BODY1-YLPH
ZL = LW_UD_BODY1-ZL
GZ = LW_UD_BODY1-GZ
MBLNR = LW_UD_BODY1-MBLNR
LGORT = LW_UD_BODY1-LGORT
WHERE BTBHA = LW_UD_BODY1-BTBHA
AND YLDM = LW_UD_BODY1-YLDM
AND YLPH = LW_UD_BODY1-YLPH
AND LGORT = LW_UD_BODY1-LGORT
AND GZ <> 'Y'.
ELSE.
INSERT ZZTPP_ZSTZ_BODY1 FROM LW_UD_BODY1 .
ENDIF.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
ELSEIF LS_MSEG-BWART = '102' "冲销直接收货
OR LS_MSEG-BWART = '123' "冲销退货
OR LS_MSEG-BWART = '122'. "像供应商退货
IF
LS_MSEG-BWART = '123' AND
( LS_MSEG-CHARG+0(1) = '#' OR LS_MSEG-CHARG+0(1) = '^' )
OR
LS_MSEG-BWART = '122' AND
( LS_MSEG-CHARG+0(1) = '#' OR LS_MSEG-CHARG+0(1) = '^' ).
*返工品
LW_UD_BODY2-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY2-FGPDM = LS_MSEG-MATNR.
LW_UD_BODY2-FGOPH = LS_MSEG-CHARG.
LW_UD_BODY2-FGPMS = GW_MAKTX.
CLEAR GW_AUFNR.
SELECT SINGLE AUFNR
FROM MSEG
INTO GW_AUFNR
WHERE MATNR = LS_MSEG-MATNR
AND BWART = '101'
AND CHARG = LS_MSEG-CHARG.
IF SY-SUBRC <> 0.
"转储的情况考虑在内
CLEAR GW_CHARG.
SELECT SINGLE UMCHA
FROM MSEG
INTO GW_CHARG
WHERE MATNR = LS_MSEG-MATNR
AND BWART = '309'
AND CHARG = LS_MSEG-CHARG.
CLEAR GW_AUFNR.
SELECT SINGLE AUFNR
FROM MSEG
INTO GW_AUFNR
WHERE MATNR = LS_MSEG-MATNR
AND BWART = '101'
AND CHARG = GW_CHARG.
ENDIF.
LW_UD_BODY2-YDDH = GW_AUFNR.
LW_UD_BODY2-FGDDH = LS_MSEG-AUFNR.
IF LS_MSEG-BWART = '261' OR LS_MSEG-BWART = '122'.
LW_UD_BODY2-ZL = LS_MSEG-MENGE .
ELSE.
LW_UD_BODY2-ZL = - LS_MSEG-MENGE .
ENDIF.
LW_UD_BODY2-MBLNR = LS_MSEG-MBLNR.
IF LS_MSEG-MBLNR IS NOT INITIAL.
LW_UD_BODY2-GZ = 'Y'.
ENDIF.
LW_UD_BODY2-LGORT = LS_MSEG-LGORT.
CLEAR LW_FT.
LW_FT-AUFNR = LS_MSEG-AUFNR.
LW_FT-MENGE = LS_MSEG-MENGE.
APPEND LW_FT TO LT_FT2.
SELECT BTBHA FGPDM FGOPH FGDDH LGORT
INTO TABLE LT_UD_BODY2
FROM ZZTPP_ZSTZ_BODY2
WHERE BTBHA = LW_UD_BODY2-BTBHA
AND FGPDM = LW_UD_BODY2-FGPDM
AND FGOPH = LW_UD_BODY2-FGOPH
AND YDDH = LW_UD_BODY2-YDDH
AND FGDDH = LW_UD_BODY2-FGDDH
AND LGORT = LW_UD_BODY2-LGORT
******Change at 2012-09-28
AND MBLNR = LW_UD_BODY2-MBLNR
.
IF SY-SUBRC = 0 .
UPDATE ZZTPP_ZSTZ_BODY2
SET BTBHA = LW_UD_BODY2-BTBHA
FGPDM = LW_UD_BODY2-FGPDM
FGPMS = LW_UD_BODY2-FGPMS
FGOPH = LW_UD_BODY2-FGOPH
FGDDH = LW_UD_BODY2-FGDDH
YDDH = LW_UD_BODY2-YDDH
ZL = LW_UD_BODY2-ZL
GZ = LW_UD_BODY2-GZ
MBLNR = LW_UD_BODY2-MBLNR
LGORT = LW_UD_BODY2-LGORT
WHERE BTBHA = LW_UD_BODY2-BTBHA
AND FGPDM = LW_UD_BODY2-FGPDM
AND FGOPH = LW_UD_BODY2-FGOPH
AND YDDH = LW_UD_BODY2-YDDH
AND FGDDH = LW_UD_BODY2-FGDDH
AND LGORT = LW_UD_BODY2-LGORT
AND GZ <> 'Y'.
ELSE.
INSERT ZZTPP_ZSTZ_BODY2 FROM LW_UD_BODY2.
ENDIF.
APPEND LW_UD_BODY2 TO GT_BODY2.
CONTINUE.
ELSE.
*冲销的!!!
IF LS_MSEG-CHARG+0(1) ='#'. "待检品批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-DJYPZL = 0 - LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ELSEIF LS_MSEG-CHARG+0(1) ='^'. "不合格批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
LW_UD_BODY3-BHGPZL = 0 - LS_MSEG-MENGE .
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ELSE.
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA."台班班号
LW_UD_BODY3-MATNR = LS_MSEG-MATNR. "成品代码
LW_UD_BODY3-MAKTX = GW_MAKTX. "成品描述
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR. "产品订单号
LW_UD_BODY3-HGPZL = 0 - LS_MSEG-MENGE . "合格品重量
LW_UD_BODY3-LGORT = LS_MSEG-LGORT. "库存地点
ENDIF.
LW_UD_BODY3-CPCCHEJ =
LW_UD_BODY3-HGPZL + LW_UD_BODY3-BHGPZL + LW_UD_BODY3-DJYPZL. "成品产出合计
APPEND LW_UD_BODY3 TO GT_BODY3.
CONTINUE.
ENDIF.
ELSE.
*成品
IF LS_MSEG-CHARG+0(1) ='#'. "待检品批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
* LW_UD_BODY3-DJYPZL = LS_MSEG-MENGE .
IF LS_MSEG-SHKZG = 'S'.
LW_UD_BODY3-DJYPZL = LS_MSEG-MENGE.
ELSE.
LW_UD_BODY3-DJYPZL = - LS_MSEG-MENGE.
ENDIF.
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ELSEIF LS_MSEG-CHARG+0(1) ='^'. "不合格批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
* LW_UD_BODY3-BHGPZL = LS_MSEG-MENGE .
IF LS_MSEG-SHKZG = 'S'.
LW_UD_BODY3-BHGPZL = LS_MSEG-MENGE.
ELSE.
LW_UD_BODY3-BHGPZL = - LS_MSEG-MENGE.
ENDIF.
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ELSE. "合格批号
LW_UD_BODY3-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_UD_BODY3-MATNR = LS_MSEG-MATNR.
LW_UD_BODY3-MAKTX = GW_MAKTX.
LW_UD_BODY3-CPDDH = LS_MSEG-AUFNR.
* LW_UD_BODY3-HGPZL = LS_MSEG-MENGE .
IF LS_MSEG-SHKZG = 'S'.
LW_UD_BODY3-HGPZL = LS_MSEG-MENGE.
ELSE.
LW_UD_BODY3-HGPZL = - LS_MSEG-MENGE.
ENDIF.
LW_UD_BODY3-LGORT = LS_MSEG-LGORT.
ENDIF.
LW_UD_BODY3-CPCCHEJ = LW_UD_BODY3-HGPZL + LW_UD_BODY3-BHGPZL + LW_UD_BODY3-DJYPZL.
APPEND LW_UD_BODY3 TO GT_BODY3.
CONTINUE.
ENDIF.
ENDIF.
ENDLOOP.
*---------------------------------玻纤冲销问题
IF GT_BODY4 IS NOT INITIAL.
TYPES : BEGIN OF T_BODY4,
BTBHA TYPE ZTBBH,"台班班号
YLDM TYPE ZBFDM,"波纤/废线代码
YLPH TYPE ZBFPH,"批号
LGORT TYPE LGORT_D,"库存地点
GZ TYPE ZGZF,"过账
ROWCOLOR TYPE CHAR04,"数据类型
YLZL TYPE ZBFZL,"重量
MBLNR TYPE MBLNR,"物料凭证编号
YLMS TYPE ZYLMS2,"余料描述
END OF T_BODY4.
DATA : I_BODY4 TYPE STANDARD TABLE OF T_BODY4,
I_AFTER TYPE STANDARD TABLE OF T_BODY4,
I_INSERT_BODY4 TYPE STANDARD TABLE OF ZZTPP_ZSTZ_BODY4,
WA_BODY4 TYPE T_BODY4.
"MOVE GT_BODY4 TO I_BODY4.
REFRESH I_BODY4.
LOOP AT GT_BODY4 INTO LW_UD_BODY4.
MOVE-CORRESPONDING LW_UD_BODY4 TO WA_BODY4.
CLEAR : WA_BODY4-MBLNR,
WA_BODY4-YLMS.
APPEND WA_BODY4 TO I_BODY4.
ENDLOOP.
"已过帐的相同行次合并,为了剔除冲销行项目
LOOP AT I_BODY4 INTO WA_BODY4.
COLLECT WA_BODY4 INTO I_AFTER.
ENDLOOP.
DELETE I_AFTER WHERE YLZL = 0.
CLEAR WA_BODY4.
LOOP AT I_AFTER INTO WA_BODY4.
CLEAR LW_UD_BODY4.
READ TABLE GT_BODY4 INTO LW_UD_BODY4 WITH KEY BTBHA = WA_BODY4-BTBHA
YLDM = WA_BODY4-YLDM
YLPH = WA_BODY4-YLPH
LGORT = WA_BODY4-LGORT
GZ = WA_BODY4-GZ.
IF SY-SUBRC = 0.
WA_BODY4-MBLNR = LW_UD_BODY4-MBLNR.
WA_BODY4-YLMS = LW_UD_BODY4-YLMS.
ENDIF.
MODIFY I_AFTER FROM WA_BODY4.
ENDLOOP.
REFRESH I_INSERT_BODY4.
LOOP AT I_AFTER INTO WA_BODY4.
MOVE-CORRESPONDING WA_BODY4 TO LW_UD_BODY4.
APPEND LW_UD_BODY4 TO I_INSERT_BODY4.
ENDLOOP.
DELETE FROM ZZTPP_ZSTZ_BODY4 WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND YLDM <> '000000003010300000' AND
YLDM <> '000000003010400000' AND
YLDM <> '000000003100300000' AND
YLDM <> '000000003100100000' AND
YLDM <> '000000003100900000' AND
GZ <> ''.
IF SY-SUBRC = 0.
MODIFY ZZTPP_ZSTZ_BODY4 FROM TABLE I_INSERT_BODY4.
IF SY-SUBRC = 0.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
ENDIF.
ENDIF.
* 系统抓取数据与自定义表中数据对比
* LOOP AT GT_BODY1 INTO LW_UD_BODY1.
* MOVE-CORRESPONDING LW_UD_BODY1 TO LR_1.
* APPEND LR_1 TO LT_NEW_BODY1.
* ENDLOOP.
* LOOP AT GT_BODY2 INTO LW_UD_BODY2 .
* MOVE-CORRESPONDING LW_UD_BODY2 TO LR_2.
* APPEND LR_2 TO LT_NEW_BODY2.
* ENDLOOP.
* LOOP AT GT_BODY4 INTO LW_UD_BODY4 .
* MOVE-CORRESPONDING LW_UD_BODY4 TO LR_4.
* APPEND LR_4 TO LT_NEW_BODY4.
* ENDLOOP.
********Change at 2012-05-29 添加 MBLNR
* SORT LT_NEW_BODY1 BY BTBHA YLDM YLPH LGORT MBLNR.
* DELETE ADJACENT DUPLICATES FROM LT_NEW_BODY1 COMPARING BTBHA YLDM YLPH LGORT MBLNR.
* SORT LT_NEW_BODY2 BY BTBHA FGPDM FGOPH YDDH FGDDH LGORT MBLNR.
* DELETE ADJACENT DUPLICATES FROM LT_NEW_BODY2 COMPARING BTBHA FGPDM FGOPH YDDH FGDDH LGORT MBLNR.
* SORT LT_NEW_BODY4 BY BTBHA YLDM YLPH LGORT MBLNR.
* DELETE ADJACENT DUPLICATES FROM LT_NEW_BODY4 COMPARING BTBHA YLDM YLPH LGORT MBLNR.
*
**比较两个内表,得出第二个内表不同于第一个内表的部分
* CALL FUNCTION 'CTVB_COMPARE_TABLES'
* EXPORTING
* TABLE_OLD = LT_OLD_BODY1[]
* TABLE_NEW = LT_NEW_BODY1[]
* KEY_LENGTH = 22
* IMPORTING
* TABLE_DEL = DEL_1_TAB[].
* IF DEL_1_TAB[] IS NOT INITIAL.
* LOOP AT DEL_1_TAB INTO LR_1 .
* UPDATE ZZTPP_ZSTZ_BODY1
* SET GZ = ''
* WHERE BTBHA = LR_1-BTBHA
* AND YLDM = LR_1-YLDM
* AND YLPH = LR_1-YLPH
* AND LGORT = LR_1-LGORT
* AND GZ = 'Y'.
* IF SY-SUBRC = 0.
* IF ZZTPP_ZSTZ_HEAD-GZ = 'Y'.
* "过账日期写入head不能修改
* UPDATE ZZTPP_ZSTZ_HEAD
* SET BUDAT = SY-DATUM
* GZ = ''
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '1' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
* ENDIF.
* ENDIF.
* ENDLOOP.
* ENDIF.
*
* CALL FUNCTION 'CTVB_COMPARE_TABLES'
* EXPORTING
* TABLE_OLD = LT_OLD_BODY2[]
* TABLE_NEW = LT_NEW_BODY2[]
* KEY_LENGTH = 22
* IMPORTING
* TABLE_DEL = DEL_2_TAB[].
* IF DEL_2_TAB[] IS NOT INITIAL.
* LOOP AT DEL_2_TAB INTO LR_2 .
* UPDATE ZZTPP_ZSTZ_BODY2
* SET GZ = ''
* WHERE BTBHA = LR_2-BTBHA
* AND FGPDM = LR_2-FGPDM
* AND FGOPH = LR_2-FGOPH
* AND YDDH = LR_2-YDDH
* AND FGDDH = LR_2-FGDDH
* AND LGORT = LR_2-LGORT
* AND GZ = 'Y'.
* IF SY-SUBRC = 0.
* IF ZZTPP_ZSTZ_HEAD-GZ = 'Y'.
* "过账日期写入head不能修改
* UPDATE ZZTPP_ZSTZ_HEAD
* SET BUDAT = SY-DATUM
* GZ = ''
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '1' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
* ENDIF.
* ENDIF.
* ENDLOOP.
* ENDIF.
*
* CALL FUNCTION 'CTVB_COMPARE_TABLES'
* EXPORTING
* TABLE_OLD = LT_OLD_BODY4[]
* TABLE_NEW = LT_NEW_BODY4[]
* KEY_LENGTH = 22
* IMPORTING
* TABLE_DEL = DEL_4_TAB[].
* IF DEL_4_TAB[] IS NOT INITIAL.
* LOOP AT DEL_4_TAB INTO LR_4 .
* UPDATE ZZTPP_ZSTZ_BODY4
* SET GZ = ''
* WHERE BTBHA = LR_4-BTBHA
* AND YLDM = LR_4-YLDM
* AND YLPH = LR_4-YLPH
* AND LGORT = LR_4-LGORT
* AND GZ = 'Y'.
* IF SY-SUBRC = 0.
* IF ZZTPP_ZSTZ_HEAD-GZ = 'Y'.
* "过账日期写入head不能修改
* UPDATE ZZTPP_ZSTZ_HEAD
* SET BUDAT = SY-DATUM
* GZ = ''
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '1' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
* ENDIF.
* ENDIF.
* ENDLOOP.
* ENDIF.
SORT GT_BODY3 BY BTBHA MATNR CPDDH LGORT.
CLEAR LW_UD_BODY3.
REFRESH GT_HUIZONG.
LOOP AT GT_BODY3 INTO LW_UD_BODY3. "对成品表中相同数据汇总
GW_HUIZONG-BTBHA = LW_UD_BODY3-BTBHA.
GW_HUIZONG-MATNR = LW_UD_BODY3-MATNR.
GW_HUIZONG-MAKTX = LW_UD_BODY3-MAKTX.
GW_HUIZONG-CPDDH = LW_UD_BODY3-CPDDH.
GW_HUIZONG-LGORT = LW_UD_BODY3-LGORT.
GW_HUIZONG-HGPZL = LW_UD_BODY3-HGPZL.
GW_HUIZONG-BHGPZL = LW_UD_BODY3-BHGPZL.
GW_HUIZONG-DJYPZL = LW_UD_BODY3-DJYPZL.
GW_HUIZONG-CPCCHEJ = LW_UD_BODY3-CPCCHEJ.
COLLECT GW_HUIZONG INTO GT_HUIZONG.
ENDLOOP.
*Delete vlild order
DELETE GT_HUIZONG WHERE HGPZL = 0
AND BHGPZL = 0
AND DJYPZL = 0
AND CPCCHEJ = 0.
*删除多余的收货行次--------用于收货时录错了台班班号的情况
REFRESH GT_BODY3.
CLEAR LW_UD_BODY3.
SELECT * INTO TABLE GT_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
IF LINES( GT_BODY3 ) > 0.
LOOP AT GT_BODY3 INTO LW_UD_BODY3.
CLEAR : GW_HUIZONG.
READ TABLE GT_HUIZONG INTO GW_HUIZONG WITH KEY MATNR = LW_UD_BODY3-MATNR
CPDDH = LW_UD_BODY3-CPDDH
LGORT = LW_UD_BODY3-LGORT.
IF SY-SUBRC <> 0.
DELETE ZZTPP_ZSTZ_BODY3 FROM LW_UD_BODY3.
CONTINUE.
ENDIF.
ENDLOOP.
ENDIF.
REFRESH GT_BODY3.
CLEAR LW_UD_BODY3.
LOOP AT GT_HUIZONG INTO GW_HUIZONG.
MODIFY ZZTPP_ZSTZ_BODY3 FROM GW_HUIZONG.
" UPDATE zztpp_zstz_body3
" SET maktx = gw_huizong-maktx
" hgpzl = gw_huizong-hgpzl
" bhgpzl = gw_huizong-bhgpzl
" djypzl = gw_huizong-djypzl
" cpcchej = gw_huizong-cpcchej
" WHERE btbha = gw_huizong-btbha
" AND matnr = gw_huizong-matnr
" AND cpddh = gw_huizong-cpddh.
ENDLOOP.
*使用返工品比较内表,给成品订单分配返工品
REFRESH GT_BODY2.
REFRESH GT_FGDDH.
REFRESH GT_XTDD.
*取当前台班的已存返工品信息
SELECT *
FROM ZZTPP_ZSTZ_BODY2
INTO TABLE GT_BODY2
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR LW_UD_BODY2.
*区分相同订单或者不同订单的返工品
LOOP AT GT_BODY2 INTO LW_UD_BODY2. "返工品订单与原订单相同时,将数据分到成品表中对应字段
IF LW_UD_BODY2-YDDH = LW_UD_BODY2-FGDDH.
GW_XTDD-YDDH = LW_UD_BODY2-YDDH.
GW_XTDD-FGDDH = LW_UD_BODY2-FGDDH.
GW_XTDD-LGORT = LW_UD_BODY2-LGORT. "2014-01-27
GW_XTDD-ZL = LW_UD_BODY2-ZL.
COLLECT GW_XTDD INTO GT_XTDD.
ENDIF.
GW_FGDDH-FGDDH = LW_UD_BODY2-FGDDH.
GW_FGDDH-LGORT = LW_UD_BODY2-LGORT. "2014-01-27
GW_FGDDH-ZL = LW_UD_BODY2-ZL.
COLLECT GW_FGDDH INTO GT_FGDDH.
ENDLOOP.
*原料产出合计 - 多余步骤
CLEAR LW_UD_BODY3.
LOOP AT GT_HUIZONG INTO LW_UD_BODY3.
LW_UD_BODY3-YLCCHJ = LW_UD_BODY3-CPCCHEJ - LW_UD_BODY3-FGP.
UPDATE ZZTPP_ZSTZ_BODY3
SET YLCCHJ = LW_UD_BODY3-YLCCHJ
WHERE BTBHA = LW_UD_BODY3-BTBHA
AND MATNR = LW_UD_BODY3-MATNR
AND CPDDH = LW_UD_BODY3-CPDDH
AND LGORT = LW_UD_BODY3-LGORT.
ENDLOOP.
*计算原料产出
CLEAR LW_UD_BODY3.
LOOP AT GT_FGDDH INTO GW_FGDDH. "不同订单
SELECT SINGLE * INTO LW_UD_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND CPDDH = GW_FGDDH-FGDDH
AND LGORT = GW_FGDDH-LGORT. "2014-01-27
IF SY-SUBRC = 0.
LW_UD_BODY3-FGP = GW_FGDDH-ZL.
LW_UD_BODY3-YLCCHJ = LW_UD_BODY3-CPCCHEJ - LW_UD_BODY3-FGP."不同订单的需要减去
"如果为负数为没有原料的情况,纯返工订单,此项目为0 --修改 :2013-11-15
IF LW_UD_BODY3-YLCCHJ <= 0.
LW_UD_BODY3-YLCCHJ = 0.
ENDIF.
ELSE.
*要是比如不同订单的L001返工至L002就不能将库位条件加入选择项
*要是有L001和L002的同时返工到一个仓位中,需要累加处理 --修改 :2014-09-15
SELECT SINGLE * INTO LW_UD_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND CPDDH = GW_FGDDH-FGDDH.
IF SY-SUBRC = 0.
LW_UD_BODY3-FGP = LW_UD_BODY3-FGP + GW_FGDDH-ZL.
LW_UD_BODY3-YLCCHJ = LW_UD_BODY3-CPCCHEJ - LW_UD_BODY3-FGP."不同订单的需要减去
"如果为负数为没有原料的情况,纯返工订单,此项目为0 --修改 :2013-11-15
IF LW_UD_BODY3-YLCCHJ <= 0.
LW_UD_BODY3-YLCCHJ = 0.
ENDIF.
ENDIF.
ENDIF.
*更新数据库表返工品重量和原来产出合计
UPDATE ZZTPP_ZSTZ_BODY3
SET FGP = LW_UD_BODY3-FGP
YLCCHJ = LW_UD_BODY3-YLCCHJ
WHERE BTBHA = LW_UD_BODY3-BTBHA
AND MATNR = LW_UD_BODY3-MATNR
AND CPDDH = LW_UD_BODY3-CPDDH
AND LGORT = LW_UD_BODY3-LGORT.
ENDLOOP.
*成品产量 = 成品产出合计
REFRESH GT_BODY3."成品信息Tab表
SELECT * INTO TABLE GT_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
*计算产品产量
LOOP AT GT_BODY3 INTO LW_UD_BODY3 .
LW_UD_BODY3-CPCL = LW_UD_BODY3-CPCCHEJ.
UPDATE ZZTPP_ZSTZ_BODY3
SET CPCL = LW_UD_BODY3-CPCL
WHERE BTBHA = LW_UD_BODY3-BTBHA
AND MATNR = LW_UD_BODY3-MATNR
AND CPDDH = LW_UD_BODY3-CPDDH
AND LGORT = LW_UD_BODY3-LGORT.
ENDLOOP.
*同一订单的报工扣减
CLEAR LW_UD_BODY3.
CLEAR GW_XTDD."同一订单的分配表
LOOP AT GT_XTDD INTO GW_XTDD.
SELECT SINGLE * INTO LW_UD_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND CPDDH = GW_XTDD-FGDDH
AND LGORT = GW_XTDD-LGORT. "2014-01-27
*如果是同一订单的话报工产量需要扣减,因为之前的台班肯定报工过了
IF SY-SUBRC = 0.
LW_UD_BODY3-CPCL = LW_UD_BODY3-CPCCHEJ - GW_XTDD-ZL.
ELSE.
SELECT SINGLE * INTO LW_UD_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND CPDDH = GW_XTDD-FGDDH.
IF SY-SUBRC = 0.
LW_UD_BODY3-CPCL = LW_UD_BODY3-CPCCHEJ - GW_XTDD-ZL.
ENDIF.
ENDIF.
UPDATE ZZTPP_ZSTZ_BODY3
SET CPCL = LW_UD_BODY3-CPCL
WHERE BTBHA = LW_UD_BODY3-BTBHA
AND MATNR = LW_UD_BODY3-MATNR
AND CPDDH = LW_UD_BODY3-CPDDH
AND LGORT = LW_UD_BODY3-LGORT.
ENDLOOP.
*原材料投入数量合计
REFRESH GT_BODY1."原料信息Tab表
SELECT * INTO TABLE GT_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR : LW_UD_BODY1,
GW_BODY1_SUM.
IF GT_BODY1 IS NOT INITIAL.
LOOP AT GT_BODY1 INTO LW_UD_BODY1.
GW_BODY1_SUM = GW_BODY1_SUM + LW_UD_BODY1-ZL."投入总量
ENDLOOP.
ENDIF.
*原料产出合计
REFRESH GT_BODY3."成品信息Tab表
SELECT * INTO TABLE GT_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR : LW_UD_BODY3,
GW_BODY3_SUM,
GW_CPCLSUM.
IF GT_BODY3 IS NOT INITIAL.
LOOP AT GT_BODY3 INTO LW_UD_BODY3.
GW_BODY3_SUM = GW_BODY3_SUM + LW_UD_BODY3-YLCCHJ. "原料产出总量
GW_CPCLSUM = GW_CPCLSUM + LW_UD_BODY3-CPCL. "产量
ENDLOOP.
ENDIF.
*波纤产出合计
REFRESH GT_BODY4."玻纤/余料信息Tab表
SELECT * INTO TABLE GT_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR : LW_UD_BODY4,
GW_BODY4_SUM.
IF GT_BODY3 IS NOT INITIAL.
LOOP AT GT_BODY4 INTO LW_UD_BODY4.
GW_BODY4_SUM = GW_BODY4_SUM + LW_UD_BODY4-YLZL.
ENDLOOP.
ENDIF.
SORT LT_FT1 BY AUFNR.
CLEAR LW_FT.
LOOP AT LT_FT1 INTO LW_FT.
COLLECT LW_FT INTO LT_HZ_FT1.
ENDLOOP.
SORT LT_FT2 BY AUFNR.
CLEAR LW_FT.
LOOP AT LT_FT2 INTO LW_FT.
COLLECT LW_FT INTO LT_HZ_FT2.
ENDLOOP.
SORT LT_FT4 BY AUFNR.
CLEAR LW_FT.
LOOP AT LT_FT4 INTO LW_FT.
COLLECT LW_FT INTO LT_HZ_FT4.
ENDLOOP.
*过账日期
DATA LV_DAT TYPE D.
DATA LV_BTBHA TYPE BKTXT.
TYPES : BEGIN OF T_LAP.
INCLUDE STRUCTURE ZZTPP_ZSTZ_BODY3.
TYPES : STDWAGE TYPE ZSTDWAGE.",班组计件工资标准(元/吨)
TYPES : END OF T_LAP.
DATA :
LV_SUM TYPE ZZTPP_ZSTZ_BODY3-CPCL,
I_LAP TYPE STANDARD TABLE OF T_LAP,
WA_LAP TYPE T_LAP.
IF ZZTPP_ZSTZ_HEAD-GZ = 'Y'.
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'M'.
REFRESH I_LAP.
CLEAR : LV_SUM.
LOOP AT GT_BODY3 INTO LW_UD_BODY3.
CLEAR : WA_LAP.
MOVE-CORRESPONDING LW_UD_BODY3 TO WA_LAP.
SELECT SINGLE STDWAGE
FROM ZWAGE
INTO WA_LAP-STDWAGE
WHERE MATNR = WA_LAP-MATNR.
LV_SUM = LV_SUM + WA_LAP-STDWAGE * WA_LAP-CPCL / 1000.
APPEND WA_LAP TO I_LAP.
ENDLOOP.
ENDIF.
ENDIF.
LOOP AT GT_BODY3 INTO LW_UD_BODY3.
*机器工时人工工时分摊
REFRESH LT_AFRU.
SELECT AUFNR LTXA1 ISM01 ISM02 ISM03 BUDAT
INTO TABLE LT_AFRU
FROM AFRU
WHERE AUFNR = LW_UD_BODY3-CPDDH
AND LTXA1 = ZZTPP_ZSTZ_HEAD-BTBHA
AND STOKZ <> 'X'
AND STZHL = ''.
CLEAR : LV_DAT ,LV_BTBHA .
IF STRLEN( ZZTPP_ZSTZ_HEAD-BTBHA ) = 8.
CONCATENATE '20' ZZTPP_ZSTZ_HEAD-BTBHA+2(6) INTO LV_DAT.
LV_BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA+0(2).
ELSEIF STRLEN( ZZTPP_ZSTZ_HEAD-BTBHA ) = 10.
CONCATENATE '20' ZZTPP_ZSTZ_HEAD-BTBHA+4(6) INTO LV_DAT.
LV_BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA+0(4).
ENDIF.
SELECT AUFNR LTXA1 BUDAT ISM01 ISM02 ISM03
APPENDING CORRESPONDING FIELDS OF TABLE LT_AFRU
FROM AFRU
WHERE BUDAT = LV_DAT
AND AUFNR = LW_UD_BODY3-CPDDH
AND LTXA1 = ''
AND LOGRP = LV_BTBHA
AND STOKZ <> 'X'
AND STZHL = ''.
IF ZZTPP_ZSTZ_HEAD-GZ = 'Y' AND LT_AFRU IS NOT INITIAL.
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'M'. " -----------棉卷班的分摊法则
CLEAR : WA_LAP.
READ TABLE I_LAP INTO WA_LAP WITH KEY MATNR = LW_UD_BODY3-MATNR
CPDDH = LW_UD_BODY3-CPDDH
LGORT = LW_UD_BODY3-LGORT.
IF SY-SUBRC = 0.
"机器工时
LW_UD_BODY3-JQFT = ( ZZTPP_ZSTZ_HEAD-QTTJSJ * WA_LAP-CPCL * WA_LAP-STDWAGE / 1000 ) / LV_SUM.
"人工工时
LW_UD_BODY3-RGFT = ( ZZTPP_ZSTZ_HEAD-BZWZS * WA_LAP-CPCL * WA_LAP-STDWAGE / 1000 ) / LV_SUM.
"用电工时
LW_UD_BODY3-YDFT = ( ZZTPP_ZSTZ_HEAD-QTTJSJ * WA_LAP-CPCL * WA_LAP-STDWAGE / 1000 ) / LV_SUM.
ENDIF.
ELSE. "-------------------其余班的分摊法则
LW_UD_BODY3-JQFT = ( ZZTPP_ZSTZ_HEAD-QTTJSJ / GW_CPCLSUM ) * LW_UD_BODY3-CPCL. "机器
LW_UD_BODY3-RGFT = ( ZZTPP_ZSTZ_HEAD-BZWZS / GW_CPCLSUM ) * LW_UD_BODY3-CPCL."人工
LW_UD_BODY3-YDFT = ( ZZTPP_ZSTZ_HEAD-QTTJSJ / GW_CPCLSUM ) * LW_UD_BODY3-CPCL."用电
ENDIF.
MODIFY ZZTPP_ZSTZ_BODY3 FROM LW_UD_BODY3.
ELSE.
*抓取各工时分摊 ------ZPP110报工作成
REFRESH LT_AFRU.
SELECT AUFNR LTXA1 ISM01 ISM02 ISM03 BUDAT
INTO TABLE LT_AFRU
FROM AFRU
WHERE AUFNR = LW_UD_BODY3-CPDDH
AND LTXA1 = ZZTPP_ZSTZ_HEAD-BTBHA
AND STOKZ <> 'X'
AND STZHL = ''.
IF LT_AFRU IS NOT INITIAL.
CLEAR : LV_DAT ,LV_BTBHA .
IF STRLEN( ZZTPP_ZSTZ_HEAD-BTBHA ) = 8.
CONCATENATE '20' ZZTPP_ZSTZ_HEAD-BTBHA+2(6) INTO LV_DAT.
LV_BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA+0(2).
ELSEIF STRLEN( ZZTPP_ZSTZ_HEAD-BTBHA ) = 10.
CONCATENATE '20' ZZTPP_ZSTZ_HEAD-BTBHA+4(6) INTO LV_DAT.
LV_BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA+0(4).
ENDIF.
SELECT AUFNR LTXA1 BUDAT ISM01 ISM02 ISM03
APPENDING CORRESPONDING FIELDS OF TABLE LT_AFRU
FROM AFRU
WHERE BUDAT = LV_DAT
AND AUFNR = LW_UD_BODY3-CPDDH
AND LTXA1 = ''
AND LOGRP = LV_BTBHA
AND STOKZ <> 'X'
AND STZHL = ''.
LOOP AT LT_AFRU INTO LW_AFRU.
* COLLECT LW_AFRU INTO LT_GS_AFRU.
LW_UD_BODY3-JQFT = LW_UD_BODY3-JQFT + LW_AFRU-ISM01.
LW_UD_BODY3-RGFT = LW_UD_BODY3-RGFT + LW_AFRU-ISM02.
LW_UD_BODY3-YDFT = LW_UD_BODY3-YDFT + LW_AFRU-ISM03.
ENDLOOP.
CLEAR LW_AFRU.
* READ TABLE LT_GS_AFRU INTO LW_AFRU INDEX 1.
* LW_UD_BODY3-JQFT = LW_AFRU-ISM02.
* LW_UD_BODY3-RGFT = LW_AFRU-ISM01.
* LW_UD_BODY3-YDFT = LW_AFRU-ISM03.
*******Change at + 20120611
* LW_UD_BODY3-JQFT = LW_AFRU-ISM01.
* LW_UD_BODY3-RGFT = LW_AFRU-ISM02.
* LW_UD_BODY3-YDFT = LW_AFRU-ISM03.
MODIFY ZZTPP_ZSTZ_BODY3 FROM LW_UD_BODY3.
IF ZZTPP_ZSTZ_HEAD-GZ = ''.
ZZTPP_ZSTZ_HEAD-BUDAT = LW_AFRU-BUDAT.
ZZTPP_ZSTZ_HEAD-GZ = 'Y'.
REFRESH:GT_HEAD.
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
ENDIF.
ELSE.
*******Change at + 20120613
*抓取各工时分摊 ------CO12报工作成
CLEAR : LV_DAT , LV_BTBHA .
IF STRLEN( ZZTPP_ZSTZ_HEAD-BTBHA ) = 8.
CONCATENATE '20' ZZTPP_ZSTZ_HEAD-BTBHA+2(6) INTO LV_DAT.
LV_BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA+0(2).
ELSEIF STRLEN( ZZTPP_ZSTZ_HEAD-BTBHA ) = 10.
CONCATENATE '20' ZZTPP_ZSTZ_HEAD-BTBHA+4(6) INTO LV_DAT.
LV_BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA+0(4).
ENDIF.
SELECT AUFNR LTXA1 BUDAT ISM01 ISM02 ISM03
INTO CORRESPONDING FIELDS OF TABLE LT_AFRU
FROM AFRU
WHERE BUDAT = LV_DAT
AND AUFNR = LW_UD_BODY3-CPDDH
AND LTXA1 = ''
AND LOGRP = LV_BTBHA
AND STOKZ <> 'X'
AND STZHL = ''.
IF LT_AFRU IS NOT INITIAL.
LOOP AT LT_AFRU INTO LW_AFRU.
LW_UD_BODY3-JQFT = LW_UD_BODY3-JQFT + LW_AFRU-ISM01.
LW_UD_BODY3-RGFT = LW_UD_BODY3-RGFT + LW_AFRU-ISM02.
LW_UD_BODY3-YDFT = LW_UD_BODY3-YDFT + LW_AFRU-ISM03.
ENDLOOP.
CLEAR LW_AFRU.
MODIFY ZZTPP_ZSTZ_BODY3 FROM LW_UD_BODY3.
IF ZZTPP_ZSTZ_HEAD-GZ = ''.
ZZTPP_ZSTZ_HEAD-BUDAT = LW_AFRU-BUDAT.
ZZTPP_ZSTZ_HEAD-GZ = 'Y'.
REFRESH:GT_HEAD.
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
ENDIF.
ELSE.
*******Change at + 20120614
* CLEAR: ZZTPP_ZSTZ_HEAD-GZ .
* REFRESH:GT_HEAD.
* APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
* MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
IF ZZTPP_ZSTZ_HEAD-GZ = 'Y'.
ZZTPP_ZSTZ_HEAD-BUDAT = LV_DAT.
ZZTPP_ZSTZ_HEAD-GZ = ''.
REFRESH:GT_HEAD.
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
CLEAR : LV_DAT.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
"原料分摊
LW_UD_BODY3-YLFT = GW_BODY1_SUM * ( LW_UD_BODY3-YLCCHJ / GW_BODY3_SUM ).
UPDATE ZZTPP_ZSTZ_BODY3
SET YLFT = LW_UD_BODY3-YLFT
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND MATNR = LW_UD_BODY3-MATNR
AND CPDDH = LW_UD_BODY3-CPDDH
AND LGORT = LW_UD_BODY3-LGORT.
"余料分摊
LW_UD_BODY3-BXFX = GW_BODY4_SUM * ( LW_UD_BODY3-YLCCHJ / GW_BODY3_SUM ).
UPDATE ZZTPP_ZSTZ_BODY3
SET BXFX = LW_UD_BODY3-BXFX
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND MATNR = LW_UD_BODY3-MATNR
AND CPDDH = LW_UD_BODY3-CPDDH
AND LGORT = LW_UD_BODY3-LGORT.
" "原料分摊
" clear lw_ft.
" loop at lt_hz_ft1 into lw_ft where aufnr = lw_ud_body3-cpddh.
" UPDATE zztpp_zstz_body3
" SET ylft = lw_ft-menge
" WHERE btbha = zztpp_zstz_head-btbha
" AND matnr = lw_ud_body3-matnr
" AND cpddh = lw_ud_body3-cpddh
" AND lgort = lw_ud_body3-lgort.
" endloop.
" "返工品分摊
" clear lw_ft.
" loop at lt_hz_ft2 into lw_ft where aufnr = lw_ud_body3-cpddh.
" UPDATE zztpp_zstz_body3
" SET fgp = lw_ft-menge
" WHERE btbha = zztpp_zstz_head-btbha
" AND matnr = lw_ud_body3-matnr
" AND cpddh = lw_ud_body3-cpddh
" AND lgort = lw_ud_body3-lgort.
" endloop.
" "余料分摊
" clear lw_ft.
" loop at lt_hz_ft4 into lw_ft where aufnr = lw_ud_body3-cpddh.
" UPDATE zztpp_zstz_body3
" SET bxfx = lw_ft-menge
" WHERE btbha = zztpp_zstz_head-btbha
" AND matnr = lw_ud_body3-matnr
" AND cpddh = lw_ud_body3-cpddh
" AND lgort = lw_ud_body3-lgort.
" endloop.
MODIFY GT_BODY3 FROM LW_UD_BODY3.
ENDLOOP.
* ENDIF.
*报工确认AFRU中取得的班组出勤总工时跟机器运行时间
IF ZZTPP_ZSTZ_HEAD-BZWZS IS INITIAL.
CLEAR :ZZTPP_ZSTZ_HEAD-BZWZS.
LOOP AT GT_BODY3 INTO LW_UD_BODY3.
ZZTPP_ZSTZ_HEAD-BZWZS = ZZTPP_ZSTZ_HEAD-BZWZS + LW_UD_BODY3-RGFT.
ENDLOOP.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-QTTJSJ IS INITIAL.
CLEAR :ZZTPP_ZSTZ_HEAD-QTTJSJ.
LOOP AT GT_BODY3 INTO LW_UD_BODY3.
ZZTPP_ZSTZ_HEAD-QTTJSJ = ZZTPP_ZSTZ_HEAD-QTTJSJ + LW_UD_BODY3-JQFT.
ENDLOOP.
ENDIF.
REFRESH:GT_HEAD.
* 当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
* 已过帐行变色
PERFORM FILL_ROWCOLOR.
* Fill the dynamic tables with data
PERFORM FILL_DYNAMIC_TABLE.
CALL METHOD OBJ_MY_ALV_GRID1->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID2->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID3->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID4->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID5->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDFORM. " UPDATE_DATA
*&---------------------------------------------------------------------*
*& Form SEARCH_DATA
*&---------------------------------------------------------------------*
* 查询数据
*----------------------------------------------------------------------*
FORM SEARCH_DATA .
DATA: LW_HEAD TYPE ZZTPP_ZSTZ_HEAD.
DATA LW_SH_BUDAT(8).
CLEAR: LW_HEAD.
CHECK ZZTPP_ZSTZ_HEAD-BTBHA IS NOT INITIAL.
SELECT SINGLE *
INTO LW_HEAD
FROM ZZTPP_ZSTZ_HEAD
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA. "台班编号
IF SY-SUBRC = 0.
ZZTPP_ZSTZ_HEAD-BUDAT = LW_HEAD-BUDAT.
PERFORM FILL_DYNAMIC_TABLE.
CALL METHOD OBJ_MY_ALV_GRID1->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID2->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID3->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID4->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID5->REFRESH_TABLE_DISPLAY.
ZZTPP_ZSTZ_HEAD-JZHAO = LW_HEAD-JZHAO.
ZZTPP_ZSTZ_HEAD-DBCCL = LW_HEAD-DBCCL.
ZZTPP_ZSTZ_HEAD-DBHSL = LW_HEAD-DBHSL.
ZZTPP_ZSTZ_HEAD-DBSHL = LW_HEAD-DBSHL.
ZZTPP_ZSTZ_HEAD-BB1YB = LW_HEAD-BB1YB.
ZZTPP_ZSTZ_HEAD-BZWZS = LW_HEAD-BZWZS.
ZZTPP_ZSTZ_HEAD-SBQSJS = LW_HEAD-SBQSJS.
ZZTPP_ZSTZ_HEAD-SBZZJS = LW_HEAD-SBZZJS.
ZZTPP_ZSTZ_HEAD-SBJXSJ = LW_HEAD-SBJXSJ.
ZZTPP_ZSTZ_HEAD-QTTJSJ = LW_HEAD-QTTJSJ.
ZZTPP_ZSTZ_HEAD-XHZL = LW_HEAD-XHZL.
ZZTPP_ZSTZ_HEAD-ZBBZ = LW_HEAD-ZBBZ.
ZZTPP_ZSTZ_HEAD-ZJY = LW_HEAD-ZJY.
ZZTPP_ZSTZ_HEAD-SCZG = LW_HEAD-SCZG.
ZZTPP_ZSTZ_HEAD-MDBS = LW_HEAD-MDBS.
ZZTPP_ZSTZ_HEAD-GZ = LW_HEAD-GZ.
ELSE.
* 查询数据失败
MESSAGE S001(00) WITH '数据不存在!' DISPLAY LIKE 'E'.
ENDIF.
ENDFORM. " SEARCH_DATA
*&---------------------------------------------------------------------*
*& Form SAVEH_DATA
*&---------------------------------------------------------------------*
* 保存头数据
*----------------------------------------------------------------------*
FORM SAVEH_DATA .
DATA: STRT1(7) TYPE C,"设备起始计时整数部分
STRT2(7) TYPE C,"设备终止计时整数部分
STRF1 TYPE P DECIMALS 2,"设备起始计时小数部分
STRF2 TYPE P DECIMALS 2."设备终止计时小数部分
DATA: LW_SH_HEAD TYPE ZZTPP_ZSTZ_HEAD.
GV_TITLE = '保存数据确认'.
GV_TXT_QA = '是否保存数据'.
CHECK ZZTPP_ZSTZ_HEAD-BTBHA IS NOT INITIAL.
"设备运行时间计算
* STRT1 = TRUNC( ZZTPP_ZSTZ_HEAD-SBQSJS ) .
* STRT2 = TRUNC( ZZTPP_ZSTZ_HEAD-SBZZJS ) .
* STRF1 = ( FRAC( ZZTPP_ZSTZ_HEAD-SBQSJS ) * 100 ) / 60.
* STRF2 = ( FRAC( ZZTPP_ZSTZ_HEAD-SBZZJS ) * 100 ) / 60.
* ZZTPP_ZSTZ_HEAD-QTTJSJ = STRT2 + STRF2 - STRT1 - STRF1.
ZZTPP_ZSTZ_HEAD-QTTJSJ = ZZTPP_ZSTZ_HEAD-SBZZJS - ZZTPP_ZSTZ_HEAD-SBQSJS.
*班组平均计件工时
IF ZZTPP_ZSTZ_HEAD-AVEJJ IS INITIAL AND ZZTPP_ZSTZ_HEAD-BTBHA+(1) = 'G'.
ZZTPP_ZSTZ_HEAD-AVEJJ = ZZTPP_ZSTZ_HEAD-BZWZS / 5.
ENDIF.
SELECT SINGLE * INTO LW_SH_HEAD
FROM ZZTPP_ZSTZ_HEAD
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
IF LW_SH_HEAD-GZ = 'Y'.
*******Change at + 20120613
* IF LW_SH_HEAD-BZWZS <> ZZTPP_ZSTZ_HEAD-BZWZS
* OR LW_SH_HEAD-SBQSJS <> ZZTPP_ZSTZ_HEAD-SBQSJS
* OR LW_SH_HEAD-SBZZJS <> ZZTPP_ZSTZ_HEAD-SBZZJS.
MESSAGE S001(00) WITH '收货已过帐!' DISPLAY LIKE 'E'.
EXIT.
* ELSE.
* REFRESH:GT_HEAD.
* "当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
* PERFORM CL_SL_SL_DATA .
* ENDIF.
ELSE.
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) <> 'V'"铁铬铝车间暂时不做控制
AND ZZTPP_ZSTZ_HEAD-BTBHA+0(1) <> 'S'"烧结车间暂时不做控制
AND ZZTPP_ZSTZ_HEAD-BTBHA+0(1) <> 'P'."铺毡车间暂时不做控制
IF ZZTPP_ZSTZ_HEAD-BZWZS > 200.
MESSAGE S001(00) WITH '班组出勤总工时不能大于200!' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
*******Change at + 20120612
IF ZZTPP_ZSTZ_HEAD-BTBHA+(1) <> 'Z'. "振切铜棉
IF ZZTPP_ZSTZ_HEAD-QTTJSJ > 20 OR ZZTPP_ZSTZ_HEAD-QTTJSJ < 0 .
MESSAGE S001(00) WITH '设备终止计时间与设备起始计时间之差应在0~20之间!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
ENDIF.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-SBQSJS IS NOT INITIAL AND ZZTPP_ZSTZ_HEAD-SBZZJS IS INITIAL.
CLEAR ZZTPP_ZSTZ_HEAD-QTTJSJ.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-SBZZJS'.
MESSAGE S001(00) WITH '请输入设备终止计时间!' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDIF.
*******Change at + 20120612
IF ZZTPP_ZSTZ_HEAD-BB1YB IS INITIAL.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-BB1YB'.
MESSAGE '请输入白班/夜班!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-BZWZS IS INITIAL.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-BZWZS'.
MESSAGE '请输入班组出勤总工时!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-BTBHA+(1) <> 'Q'.
IF ZZTPP_ZSTZ_HEAD-JZHAO IS INITIAL.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-JZHAO'.
MESSAGE '请务必正确输入机组号!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'G' AND ZZTPP_ZSTZ_HEAD-AVEJJ IS INITIAL.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-AVEJJ'.
MESSAGE '钢棉班组需要录入平均计件小时!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) <> 'V'"铁铬铝车间暂时不做控制
AND ZZTPP_ZSTZ_HEAD-BTBHA+0(1) <> 'S'"烧结车间暂时不做控制
AND ZZTPP_ZSTZ_HEAD-BTBHA+0(1) <> 'P'."铺毡车间暂时不做控制
IF ZZTPP_ZSTZ_HEAD-QTTJSJ = 0 OR ZZTPP_ZSTZ_HEAD-QTTJSJ IS INITIAL.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-QTTJSJ'.
MESSAGE '当设备运行时间为0时,不能过账!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDIF.
* IF ZZTPP_ZSTZ_HEAD-SBQSJS IS INITIAL.
* SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-SBQSJS'.
* MESSAGE '请输入设备起始时间!' TYPE 'S' DISPLAY LIKE 'E'.
* EXIT.
* ENDIF.
* IF ZZTPP_ZSTZ_HEAD-SBZZJS IS INITIAL.
* SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-SBZZJS'.
* MESSAGE '请输入设备结束时间!' TYPE 'S' DISPLAY LIKE 'E'.
* EXIT.
* ENDIF.
* 确认是否保存数据
PERFORM COFIRM_ACTION USING GV_TITLE
GV_TXT_QA
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
IF SY-SUBRC = 0 .
COMMIT WORK.
* 数据保存成功
MESSAGE S001(00) WITH '数据保存成功'.
ELSE.
ROLLBACK WORK.
* 数据保存失败
MESSAGE S001(00) WITH '数据保存失败' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
* ENDIF.
ENDIF.
ENDFORM. " SAVEH_DATA
*&---------------------------------------------------------------------*
*& Form SAVE1_DATA
*&---------------------------------------------------------------------*
* 保存原料数据
*----------------------------------------------------------------------*
FORM SAVE1_DATA .
DATA: LW_S1_BODY1 TYPE ZZTPP_ZSTZ_BODY1,
LW_S1_BODY2 TYPE ZZTPP_ZSTZ_BODY2,
LW_S1_BODY3 TYPE ZZTPP_ZSTZ_BODY3,
LW_S1_BODY4 TYPE ZZTPP_ZSTZ_BODY4.
GV_TITLE = '保存数据确认'.
GV_TXT_QA = '是否保存数据'.
IF ZZTPP_ZSTZ_BODY1-YLDM IS INITIAL
OR ZZTPP_ZSTZ_BODY1-YLPH IS INITIAL
OR ZZTPP_ZSTZ_BODY1-LGORT IS INITIAL
OR ZZTPP_ZSTZ_BODY1-ZL IS INITIAL.
MESSAGE S001(00) WITH '请输入所有内容!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
CLEAR LW_S1_BODY1.
SELECT SINGLE * INTO LW_S1_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND YLDM = ZZTPP_ZSTZ_BODY1-YLDM
AND YLPH = ZZTPP_ZSTZ_BODY1-YLPH
AND LGORT = ZZTPP_ZSTZ_BODY1-LGORT.
IF LW_S1_BODY1-GZ = 'Y'.
MESSAGE S001(00) WITH '此笔记录已过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
* 确认是否保存数据
PERFORM COFIRM_ACTION USING GV_TITLE
GV_TXT_QA
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
REFRESH:GT_BODY1.
ZZTPP_ZSTZ_BODY1-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR: GW_MAKTX.
SELECT SINGLE MAKTX
INTO GW_MAKTX
FROM MAKT
WHERE MATNR = ZZTPP_ZSTZ_BODY1-YLDM.
ZZTPP_ZSTZ_BODY1-YLMS = GW_MAKTX.
APPEND ZZTPP_ZSTZ_BODY1 TO GT_BODY1.
MODIFY ZZTPP_ZSTZ_BODY1 FROM TABLE GT_BODY1.
IF SY-SUBRC = 0 .
COMMIT WORK.
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
" Fill the dynamic table <fs_dyn_tab1>
* SELECT YLDM YLMS YLPH LGORT ZL
* FROM ZZTPP_ZSTZ_BODY1 INTO TABLE <FS_DYN_TAB1>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* CALL METHOD OBJ_MY_ALV_GRID1->REFRESH_TABLE_DISPLAY.
PERFORM FILL_DYNAMIC_TABLE.
CALL METHOD OBJ_MY_ALV_GRID1->REFRESH_TABLE_DISPLAY.
* 数据保存成功
MESSAGE S001(00) WITH '数据保存成功'.
ELSE.
ROLLBACK WORK.
* 数据保存失败
MESSAGE S001(00) WITH '数据保存失败' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " SAVE1_DATA
*&---------------------------------------------------------------------*
*& Form SAVE2_DATA
*&---------------------------------------------------------------------*
* 保存返工品数据
*----------------------------------------------------------------------*
FORM SAVE2_DATA .
DATA: LW_S2_BODY1 TYPE ZZTPP_ZSTZ_BODY1,
LW_S2_BODY2 TYPE ZZTPP_ZSTZ_BODY2,
LW_S2_BODY3 TYPE ZZTPP_ZSTZ_BODY3,
LW_S2_BODY4 TYPE ZZTPP_ZSTZ_BODY4.
GV_TITLE = '保存数据确认'.
GV_TXT_QA = '是否保存数据'.
IF ZZTPP_ZSTZ_BODY2-FGPDM IS INITIAL
OR ZZTPP_ZSTZ_BODY2-FGOPH IS INITIAL
OR ZZTPP_ZSTZ_BODY2-FGDDH IS INITIAL
OR ZZTPP_ZSTZ_BODY2-LGORT IS INITIAL
OR ZZTPP_ZSTZ_BODY2-ZL IS INITIAL.
MESSAGE S001(00) WITH '请输入所有内容!' DISPLAY LIKE 'E'.
ELSE.
ZZTPP_ZSTZ_BODY2-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR: GW_MAKTX.
SELECT SINGLE MAKTX
INTO GW_MAKTX
FROM MAKT
WHERE MATNR = ZZTPP_ZSTZ_BODY2-FGPDM.
ZZTPP_ZSTZ_BODY2-FGPMS = GW_MAKTX.
CLEAR GW_AUFNR.
SELECT SINGLE AUFNR
FROM MSEG
INTO GW_AUFNR
WHERE MATNR = ZZTPP_ZSTZ_BODY2-FGPDM
AND BWART = '101'
AND CHARG = ZZTPP_ZSTZ_BODY2-FGOPH.
*******Change at 2012-05-11
IF SY-SUBRC <> 0 . "没有收货
CLEAR GW_AUFNR.
SELECT SINGLE AUFNR
FROM MSEG
INTO GW_AUFNR
WHERE MATNR = ZZTPP_ZSTZ_BODY2-FGPDM
AND BWART = '311'
AND CHARG = ZZTPP_ZSTZ_BODY2-FGOPH.
IF SY-SUBRC <> 0.
MESSAGE '原订单收货未录入,无法保存!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDIF.
ZZTPP_ZSTZ_BODY2-YDDH = GW_AUFNR.
CLEAR LW_S2_BODY2.
SELECT SINGLE * INTO LW_S2_BODY2
FROM ZZTPP_ZSTZ_BODY2
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND FGPDM = ZZTPP_ZSTZ_BODY2-FGPDM
AND FGOPH = ZZTPP_ZSTZ_BODY2-FGOPH
AND YDDH = ZZTPP_ZSTZ_BODY2-YDDH
AND FGDDH = ZZTPP_ZSTZ_BODY2-FGDDH
AND LGORT = ZZTPP_ZSTZ_BODY2-LGORT.
IF LW_S2_BODY2-GZ = 'Y'.
MESSAGE S001(00) WITH '此笔记录已过账!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
* 确认是否保存数据
PERFORM COFIRM_ACTION USING GV_TITLE
GV_TXT_QA
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
REFRESH:GT_BODY2.
APPEND ZZTPP_ZSTZ_BODY2 TO GT_BODY2.
MODIFY ZZTPP_ZSTZ_BODY2 FROM TABLE GT_BODY2.
IF SY-SUBRC = 0 .
COMMIT WORK.
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
** Fill the dynamic table <fs_dyn_tab2>
* SELECT FGPDM FGPMS FGOPH YDDH FGDDH LGORT ZL
* FROM ZZTPP_ZSTZ_BODY2 INTO TABLE <FS_DYN_TAB2>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
PERFORM FILL_DYNAMIC_TABLE.
CALL METHOD OBJ_MY_ALV_GRID2->REFRESH_TABLE_DISPLAY.
* 数据保存成功
MESSAGE S001(00) WITH '数据保存成功'.
ELSE.
ROLLBACK WORK.
* 数据保存失败
MESSAGE S001(00) WITH '数据保存失败' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " SAVE2_DATA
*&---------------------------------------------------------------------*
*& Form SAVE3_DATA
*&---------------------------------------------------------------------*
* 保存余料数据
*----------------------------------------------------------------------*
FORM SAVE3_DATA .
DATA LW_S3_BODY4 TYPE ZZTPP_ZSTZ_BODY4.
GV_TITLE = '保存数据确认'.
GV_TXT_QA = '是否保存数据'.
IF ZZTPP_ZSTZ_BODY4-YLDM IS INITIAL
OR ZZTPP_ZSTZ_BODY4-YLPH IS INITIAL
OR ZZTPP_ZSTZ_BODY4-LGORT IS INITIAL
OR ZZTPP_ZSTZ_BODY4-YLZL IS INITIAL.
MESSAGE S001(00) WITH '请输入所有内容!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
CLEAR LW_S3_BODY4.
SELECT SINGLE * INTO LW_S3_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND YLDM = ZZTPP_ZSTZ_BODY4-YLDM
AND YLPH = ZZTPP_ZSTZ_BODY4-YLPH
AND LGORT = ZZTPP_ZSTZ_BODY4-LGORT.
IF LW_S3_BODY4-GZ = 'Y'.
MESSAGE S001(00) WITH '此笔记录已过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
* 确认是否保存数据
PERFORM COFIRM_ACTION USING GV_TITLE
GV_TXT_QA
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
REFRESH:GT_BODY4.
ZZTPP_ZSTZ_BODY4-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR: GW_MAKTX.
SELECT SINGLE MAKTX
INTO GW_MAKTX
FROM MAKT
WHERE MATNR = ZZTPP_ZSTZ_BODY4-YLDM.
ZZTPP_ZSTZ_BODY4-YLMS = GW_MAKTX.
* IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'H' AND ( ZZTPP_ZSTZ_BODY4-YLDM+8 = '3010300000' OR
* ZZTPP_ZSTZ_BODY4-YLDM+8 = '3010400000' OR
* ZZTPP_ZSTZ_BODY4-YLDM+8 = '3100300000' OR
* ZZTPP_ZSTZ_BODY4-YLDM+8 = '3100100000' OR
* ZZTPP_ZSTZ_BODY4-YLDM+8 = '3100900000' ).
* ZZTPP_ZSTZ_BODY4-ROWCOLOR = 'C410'.
* ENDIF.
APPEND ZZTPP_ZSTZ_BODY4 TO GT_BODY4.
MODIFY ZZTPP_ZSTZ_BODY4 FROM TABLE GT_BODY4.
IF SY-SUBRC = 0 .
COMMIT WORK.
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
** Fill the dynamic table <fs_dyn_tab3>
* SELECT YLDM YLMS YLPH LGORT YLZL
* FROM ZZTPP_ZSTZ_BODY4 INTO TABLE <FS_DYN_TAB4>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
PERFORM FILL_DYNAMIC_TABLE.
CALL METHOD OBJ_MY_ALV_GRID4->REFRESH_TABLE_DISPLAY.
* 数据保存成功
MESSAGE S001(00) WITH '数据保存成功'.
ELSE.
ROLLBACK WORK.
* 数据保存失败
MESSAGE S001(00) WITH '数据保存失败' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " SAVE3_DATA
*&---------------------------------------------------------------------*
*& Form SAVE4_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SAVE4_DATA .
DATA LW_S4_BODY5 TYPE ZZTPP_ZSTZ_BODY5.
GV_TITLE = '保存数据确认'.
GV_TXT_QA = '是否保存数据'.
IF ZZTPP_ZSTZ_BODY5-SCDDH IS INITIAL OR
ZZTPP_ZSTZ_BODY5-BZWLH IS INITIAL OR
ZZTPP_ZSTZ_BODY5-BZWPH IS INITIAL OR
ZZTPP_ZSTZ_BODY5-LGORT IS INITIAL OR
ZZTPP_ZSTZ_BODY5-BZWSL IS INITIAL.
MESSAGE S001(00) WITH '请输入所有内容!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
CLEAR LW_S4_BODY5.
SELECT SINGLE * INTO LW_S4_BODY5
FROM ZZTPP_ZSTZ_BODY5
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND SCDDH = ZZTPP_ZSTZ_BODY5-SCDDH
AND BZWLH = ZZTPP_ZSTZ_BODY5-BZWLH
AND BZWPH = ZZTPP_ZSTZ_BODY5-BZWPH
AND LGORT = ZZTPP_ZSTZ_BODY5-LGORT.
IF SY-SUBRC = 0 AND LW_S4_BODY5-GZ = 'Y'.
MESSAGE S001(00) WITH '此笔记录已过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
* CLEAR LW_S4_BODY5.
* SELECT SINGLE * INTO LW_S4_BODY5
* FROM ZZTPP_ZSTZ_BODY5
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
* AND GZ = 'Y'.
* IF SY-SUBRC = 0.
* MESSAGE '包装物已经过账!' TYPE 'S' DISPLAY LIKE 'E'.
* EXIT.
* ENDIF.
* 确认是否保存数据
PERFORM COFIRM_ACTION USING GV_TITLE
GV_TXT_QA
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
REFRESH:GT_BODY5.
ZZTPP_ZSTZ_BODY5-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR: GW_MAKTX.
SELECT SINGLE MAKTX
INTO GW_MAKTX
FROM MAKT
WHERE MATNR = ZZTPP_ZSTZ_BODY5-BZWLH.
ZZTPP_ZSTZ_BODY5-MAKTX = GW_MAKTX.
APPEND ZZTPP_ZSTZ_BODY5 TO GT_BODY5.
MODIFY ZZTPP_ZSTZ_BODY5 FROM TABLE GT_BODY5.
IF SY-SUBRC = 0 .
COMMIT WORK.
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
** Fill the dynamic table <fs_dyn_tab5>
* SELECT BZWLH MAKTX BZWPH LGORT BZWSL SCDDH MBLNR ROWCOLOR
* FROM ZZTPP_ZSTZ_BODY5 INTO TABLE <FS_DYN_TAB5>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
PERFORM FILL_DYNAMIC_TABLE.
CALL METHOD OBJ_MY_ALV_GRID5->REFRESH_TABLE_DISPLAY.
* 数据保存成功
MESSAGE S001(00) WITH '数据保存成功'.
ELSE.
ROLLBACK WORK.
* 数据保存失败
MESSAGE S001(00) WITH '数据保存失败' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " SAVE4_DATA
*&---------------------------------------------------------------------*
*& Form POSTH_DATA
*&---------------------------------------------------------------------*
* 工时过账
*----------------------------------------------------------------------*
FORM POSTH_DATA .
TYPES:BEGIN OF TY_RMZHL,
RMZHL TYPE AFRU-RMZHL,
END OF TY_RMZHL.
DATA: LT_RMZHL TYPE TABLE OF TY_RMZHL,
LW_RMZHL TYPE TY_RMZHL.
DATA: LW_PH_BODY3 TYPE ZZTPP_ZSTZ_BODY3,
LW_PH_HEAD TYPE ZZTPP_ZSTZ_HEAD.
DATA:
* LW_FENTAN1 TYPE P DECIMALS 10,"机时分摊和电时分摊
* LW_FENTAN2 TYPE P DECIMALS 10,"工时分摊
LW_PH_JQ TYPE AFRUD-ISM01,
LW_PH_RG TYPE AFRUD-ISM02,
LW_PH_YD TYPE AFRUD-ISM03,
LW_JQ(018) ,"AFRUD-ISM01,
LW_RG(018) ,"AFRUD-ISM02,
LW_YD(018) ."AFRUD-ISM03.
DATA: LW_CPCL(018)."AFRUD-LMNGA.
DATA: LW_BUDAT(010).
DATA: LW_CPDDH(012).
DATA: LW_LTXA1 TYPE CO_RTEXT."确认文本
DATA: LW_CC_CL(018).
DATA : LV_FLAG TYPE C. "过账失败标记
DATA: LV_MESSTAB(250). "错误提示
*******Change at + 20120613
*-----------------------先保存----------------------------------
DATA: STRT1(7) TYPE C,"设备起始计时整数部分
STRT2(7) TYPE C,"设备终止计时整数部分
STRF1 TYPE P DECIMALS 2,"设备起始计时小数部分
STRF2 TYPE P DECIMALS 2."设备终止计时小数部分
DATA: LW_SH_HEAD TYPE ZZTPP_ZSTZ_HEAD.
*******Change at + 20121114
*---------------------棉卷班的处理定义--------------------------
TYPES : BEGIN OF T_LAP.
INCLUDE STRUCTURE ZZTPP_ZSTZ_BODY3.
TYPES : STDWAGE TYPE ZSTDWAGE.",班组计件工资标准(元/吨)
TYPES : END OF T_LAP.
DATA :
LV_SUM TYPE ZZTPP_ZSTZ_BODY3-CPCL,
I_LAP TYPE STANDARD TABLE OF T_LAP,
WA_LAP TYPE T_LAP.
CHECK ZZTPP_ZSTZ_HEAD-BTBHA IS NOT INITIAL.
"设备运行时间计算
* STRT1 = TRUNC( ZZTPP_ZSTZ_HEAD-SBQSJS ) .
* STRT2 = TRUNC( ZZTPP_ZSTZ_HEAD-SBZZJS ) .
* STRF1 = ( FRAC( ZZTPP_ZSTZ_HEAD-SBQSJS ) * 100 ) / 60.
* STRF2 = ( FRAC( ZZTPP_ZSTZ_HEAD-SBZZJS ) * 100 ) / 60.
* ZZTPP_ZSTZ_HEAD-QTTJSJ = STRT2 + STRF2 - STRT1 - STRF1.
ZZTPP_ZSTZ_HEAD-QTTJSJ = ZZTPP_ZSTZ_HEAD-SBZZJS - ZZTPP_ZSTZ_HEAD-SBQSJS.
IF ZZTPP_ZSTZ_HEAD-AVEJJ IS INITIAL AND ZZTPP_ZSTZ_HEAD-BTBHA+(1) = 'G'.
ZZTPP_ZSTZ_HEAD-AVEJJ = ZZTPP_ZSTZ_HEAD-BZWZS / 5.
ENDIF.
SELECT SINGLE * INTO LW_SH_HEAD
FROM ZZTPP_ZSTZ_HEAD
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
IF LW_SH_HEAD-GZ = 'Y'.
MESSAGE S001(00) WITH '收货已过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) <> 'V' "铁铬铝车间暂时不做控制
AND ZZTPP_ZSTZ_HEAD-BTBHA+0(1) <> 'S'"烧结车间暂时不做控制
AND ZZTPP_ZSTZ_HEAD-BTBHA+0(1) <> 'P'."铺毡车间暂时不做控制
IF ZZTPP_ZSTZ_HEAD-BZWZS > 200.
MESSAGE S001(00) WITH '班组出勤总工时不能大于200!' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-BTBHA+(1) <> 'Z'. "振切铜棉
IF ZZTPP_ZSTZ_HEAD-QTTJSJ > 20 OR ZZTPP_ZSTZ_HEAD-QTTJSJ < 0 .
MESSAGE S001(00) WITH '设备终止计时与设备起始计时之差应在0~20之间!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
ENDIF.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-SBQSJS IS NOT INITIAL AND ZZTPP_ZSTZ_HEAD-SBZZJS IS INITIAL.
CLEAR ZZTPP_ZSTZ_HEAD-QTTJSJ.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-SBZZJS'.
MESSAGE S001(00) WITH '请输入设备终止计时间!' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-BB1YB IS INITIAL.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-BB1YB'.
MESSAGE '请输入白班/夜班!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-BZWZS IS INITIAL.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-BZWZS'.
MESSAGE '请输入班组出勤总工时!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-BTBHA+(1) <> 'Q'.
IF ZZTPP_ZSTZ_HEAD-JZHAO IS INITIAL.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-JZHAO'.
MESSAGE '请务必正确输入机组号!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'G' AND ZZTPP_ZSTZ_HEAD-AVEJJ IS INITIAL.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-AVEJJ'.
MESSAGE '钢棉班组需要录入平均计件小时!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) <> 'V'"铁铬铝车间暂时不做控制
AND ZZTPP_ZSTZ_HEAD-BTBHA+0(1) <> 'S' "烧结车间暂时不做控制
AND ZZTPP_ZSTZ_HEAD-BTBHA+0(1) <> 'P'."铺毡车间暂时不做控制
IF ZZTPP_ZSTZ_HEAD-QTTJSJ = 0 OR ZZTPP_ZSTZ_HEAD-QTTJSJ IS INITIAL.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-QTTJSJ'.
MESSAGE '当设备运行时间为0时,不能过账!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDIF.
* IF ZZTPP_ZSTZ_HEAD-SBQSJS IS INITIAL.
* SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-SBQSJS'.
* MESSAGE '请输入设备起始时间!' TYPE 'S' DISPLAY LIKE 'E'.
* EXIT.
* ENDIF.
* IF ZZTPP_ZSTZ_HEAD-SBZZJS IS INITIAL.
* SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-SBZZJS'.
* MESSAGE '请输入设备结束时间!' TYPE 'S' DISPLAY LIKE 'E'.
* EXIT.
* ENDIF.
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
IF SY-SUBRC = 0 .
COMMIT WORK.
ELSE.
ROLLBACK WORK.
MESSAGE S001(00) WITH '数据保存失败' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDIF.
*-------------------------过账----------------------------
*返工品变动,成品中 ‘返工品’ ‘原料产出合计’ ‘产量’ 均随之发生改变
PERFORM FRM_FGP_UPDATE.
SELECT SINGLE * INTO LW_PH_HEAD
FROM ZZTPP_ZSTZ_HEAD
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
IF LW_PH_HEAD-GZ = 'Y'.
MESSAGE S001(00) WITH '工时已经过账!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
GV_TITLE = '过账确认'.
GV_TXT_QA = '是否过账'.
* 确认是否过账数据
PERFORM COFIRM_ACTION USING GV_TITLE
GV_TXT_QA
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
REFRESH GT_BODY3.
CLEAR:GW_CPCLSUM,
LW_PH_BODY3.
SELECT * INTO TABLE GT_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LOOP AT GT_BODY3 INTO LW_PH_BODY3.
GW_CPCLSUM = GW_CPCLSUM + LW_PH_BODY3-CPCL. "计算出总产量
ENDLOOP.
"棉卷班的特殊处理
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'M'.
REFRESH I_LAP.
CLEAR : LV_SUM,LV_FLAG.
LOOP AT GT_BODY3 INTO LW_PH_BODY3.
CLEAR : WA_LAP.
MOVE-CORRESPONDING LW_PH_BODY3 TO WA_LAP.
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* INPUT = WA_LAP-MATNR
* IMPORTING
* OUTPUT = WA_LAP-MATNR.
SELECT SINGLE STDWAGE
FROM ZWAGE
INTO WA_LAP-STDWAGE
WHERE MATNR = WA_LAP-MATNR.
IF SY-SUBRC <> 0
OR WA_LAP-STDWAGE < 0.
* WA_LAP-WAGE = 0.
* MESSAGE '没有维护该物料的工时分配计件工资标准,请立即维护!' TYPE 'I'.
CLEAR LV_MESSTAB.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = WA_LAP-MATNR
IMPORTING
OUTPUT = LV_MESSTAB.
CONCATENATE '没有维护物料' LV_MESSTAB '的工时分配计件工资标准,请立即维护(详情:ZPP124)。'
INTO LV_MESSTAB.
MESSAGE LV_MESSTAB TYPE 'I'.
LV_FLAG = 'X'.
EXIT.
ENDIF.
LV_SUM = LV_SUM + WA_LAP-STDWAGE * WA_LAP-CPCL / 1000.
APPEND WA_LAP TO I_LAP.
ENDLOOP.
ENDIF.
IF LV_FLAG = 'X'.
EXIT.
ENDIF.
*成品总量不可为零
CHECK GW_CPCLSUM <> 0.
* LW_FENTAN1 = LW_PH_HEAD-QTTJSJ / GW_CPCLSUM .
* LW_FENTAN2 = LW_PH_HEAD-BZWZS / GW_CPCLSUM .
CLEAR:LW_PH_BODY3.
CLEAR : LV_FLAG.
*BDC报工
LOOP AT GT_BODY3 INTO LW_PH_BODY3.
REFRESH GT_BDCDATA[].
REFRESH GT_MESSTAB[].
CLEAR :GT_BDCDATA,GT_MESSTAB.
* CLEAR :GT_BDCDATA,GT_MESSTAB.
*报工的产品订单号
LW_CPDDH = LW_PH_BODY3-CPDDH.
*确认计数器
REFRESH LT_RMZHL.
SELECT RMZHL INTO TABLE LT_RMZHL
FROM AFRU
WHERE AUFNR = LW_CPDDH.
SORT LT_RMZHL BY RMZHL DESCENDING .
CLEAR LW_RMZHL.
READ TABLE LT_RMZHL INTO LW_RMZHL INDEX 1.
ADD 1 TO LW_RMZHL-RMZHL.
*分摊
IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'M'. " -----------棉卷班的分摊法则
CLEAR : WA_LAP.
READ TABLE I_LAP INTO WA_LAP WITH KEY MATNR = LW_PH_BODY3-MATNR
CPDDH = LW_PH_BODY3-CPDDH
LGORT = LW_PH_BODY3-LGORT.
IF SY-SUBRC = 0.
"机器工时
LW_PH_JQ = ( LW_PH_HEAD-QTTJSJ * WA_LAP-CPCL * WA_LAP-STDWAGE / 1000 ) / LV_SUM.
"人工工时
LW_PH_RG = ( LW_PH_HEAD-BZWZS * WA_LAP-CPCL * WA_LAP-STDWAGE / 1000 ) / LV_SUM.
"用电工时
LW_PH_YD = ( LW_PH_HEAD-QTTJSJ * WA_LAP-CPCL * WA_LAP-STDWAGE / 1000 ) / LV_SUM.
ENDIF.
ELSE. "-------------------其余班的分摊法则
LW_PH_JQ = ( LW_PH_HEAD-QTTJSJ / GW_CPCLSUM ) * LW_PH_BODY3-CPCL. "机器
LW_PH_RG = ( LW_PH_HEAD-BZWZS / GW_CPCLSUM ) * LW_PH_BODY3-CPCL."人工
LW_PH_YD = ( LW_PH_HEAD-QTTJSJ / GW_CPCLSUM ) * LW_PH_BODY3-CPCL."用电
ENDIF.
LW_PH_BODY3-JQFT = LW_PH_JQ.
LW_PH_BODY3-RGFT = LW_PH_RG.
LW_PH_BODY3-YDFT = LW_PH_YD.
*更新自定义表分摊到的工时
UPDATE ZZTPP_ZSTZ_BODY3
SET JQFT = LW_PH_BODY3-JQFT
RGFT = LW_PH_BODY3-RGFT
YDFT = LW_PH_BODY3-YDFT
WHERE BTBHA = LW_PH_BODY3-BTBHA
AND MATNR = LW_PH_BODY3-MATNR
AND CPDDH = LW_PH_BODY3-CPDDH
AND LGORT = LW_PH_BODY3-LGORT.
*报工的各项工时
LW_JQ = LW_PH_JQ.
LW_RG = LW_PH_RG.
LW_YD = LW_PH_YD.
*报工的过账日期
LW_BUDAT = ZZTPP_ZSTZ_HEAD-BUDAT.
*报工成品产量
LW_CC_CL = LW_PH_BODY3-CPCL.
*调用bdc程序
PERFORM BDC1_DYNPRO USING 'SAPLCORU_S' '0100'.
PERFORM BDC1_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC1_FIELD USING 'BDC_CURSOR'
'AFRUD-AUFNR'.
PERFORM BDC1_FIELD USING 'AFRUD-AUFNR'
LW_CPDDH.
PERFORM BDC1_DYNPRO USING 'SAPLCORU_S' '0100'.
PERFORM BDC1_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC1_FIELD USING 'AFRUD-AUFNR'
LW_CPDDH.
PERFORM BDC1_FIELD USING 'BDC_CURSOR'
'AFRUD-LMNGA'.
PERFORM BDC1_FIELD USING 'AFRUD-LMNGA'
LW_CC_CL.
* '0.00'.
PERFORM BDC1_DYNPRO USING 'SAPLCORU_S' '0100'.
PERFORM BDC1_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC1_FIELD USING 'AFRUD-AUFNR'
LW_CPDDH.
PERFORM BDC1_FIELD USING 'AFRUD-LMNGA'
LW_CC_CL.
* '0.00'.
PERFORM BDC1_FIELD USING 'BDC_CURSOR'
'AFRUD-ISM03'.
PERFORM BDC1_FIELD USING 'AFRUD-ISM01'
LW_JQ.
"modify 2012-10-18 by maojian
PERFORM BDC1_FIELD USING 'AFRUD-ILE01'
'H'.
PERFORM BDC1_FIELD USING 'AFRUD-ISM02'
LW_RG.
"modify 2012-10-18 by maojian
PERFORM BDC1_FIELD USING 'AFRUD-ILE02'
'H'.
PERFORM BDC1_FIELD USING 'AFRUD-ISM03'
LW_YD.
"modify 2012-10-18 by maojian
PERFORM BDC1_FIELD USING 'AFRUD-ILE03'
'H'.
PERFORM BDC1_DYNPRO USING 'SAPLCORU_S' '0100'.
PERFORM BDC1_FIELD USING 'BDC_OKCODE'
'=MB03'.
PERFORM BDC1_FIELD USING 'AFRUD-AUFNR'
LW_CPDDH.
PERFORM BDC1_FIELD USING 'AFRUD-LMNGA'
LW_CC_CL.
* '0.00'.
PERFORM BDC1_FIELD USING 'AFRUD-ISM01'
LW_JQ.
"modify 2012-10-18 by maojian
PERFORM BDC1_FIELD USING 'AFRUD-ILE01'
'H'.
PERFORM BDC1_FIELD USING 'AFRUD-ISM02'
LW_RG.
"modify 2012-10-18 by maojian
PERFORM BDC1_FIELD USING 'AFRUD-ILE02'
'H'.
PERFORM BDC1_FIELD USING 'AFRUD-ISM03'
LW_YD.
"modify 2012-10-18 by maojian
PERFORM BDC1_FIELD USING 'AFRUD-ILE03'
'H'.
PERFORM BDC1_FIELD USING 'BDC_CURSOR'
'AFRUD-BUDAT'.
PERFORM BDC1_FIELD USING 'AFRUD-BUDAT'
LW_BUDAT.
PERFORM BDC1_DYNPRO USING 'SAPLCOWB' '0130'.
PERFORM BDC1_FIELD USING 'BDC_OKCODE'
'=MALL'.
PERFORM BDC1_FIELD USING 'BDC_CURSOR'
'CAUFVD-AUFNR'.
PERFORM BDC1_DYNPRO USING 'SAPLCOWB' '0130'.
PERFORM BDC1_FIELD USING 'BDC_OKCODE'
'=DELE'.
PERFORM BDC1_FIELD USING 'BDC_CURSOR'
'CAUFVD-AUFNR'.
PERFORM BDC1_DYNPRO USING 'SAPLCOWB' '0130'.
PERFORM BDC1_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC1_FIELD USING 'BDC_CURSOR'
'CAUFVD-AUFNR'.
PERFORM BDC1_DYNPRO USING 'SAPLCORU_S' '0100'.
PERFORM BDC1_FIELD USING 'BDC_OKCODE'
'=BU'.
PERFORM BDC1_FIELD USING 'AFRUD-AUFNR'
LW_CPDDH.
PERFORM BDC1_FIELD USING 'AFRUD-LMNGA'
LW_CC_CL.
* '0.00'.
PERFORM BDC1_FIELD USING 'AFRUD-ISM01'
LW_JQ.
"modify 2012-10-18 by maojian
PERFORM BDC1_FIELD USING 'AFRUD-ILE01'
'H'.
PERFORM BDC1_FIELD USING 'AFRUD-ISM02'
LW_RG.
"modify 2012-10-18 by maojian
PERFORM BDC1_FIELD USING 'AFRUD-ILE02'
'H'.
PERFORM BDC1_FIELD USING 'AFRUD-ISM03'
LW_YD.
"modify 2012-10-18 by maojian
PERFORM BDC1_FIELD USING 'AFRUD-ILE03'
'H'.
PERFORM BDC1_FIELD USING 'AFRUD-BUDAT'
LW_BUDAT.
CLEAR:GT_MESSTAB[],GT_MESSTAB.
"实际模式
CALL TRANSACTION 'CO11N' USING GT_BDCDATA MODE 'N' UPDATE 'S' MESSAGES
INTO GT_MESSTAB.
"调试模式
* CALL TRANSACTION 'CO11N' USING GT_BDCDATA MODE 'A' UPDATE 'S' MESSAGES
* INTO GT_MESSTAB.
IF SY-SUBRC = 0.
*更新AFRU确认文本-台班班号
UPDATE AFRU
SET LTXA1 = ZZTPP_ZSTZ_HEAD-BTBHA
* LOGRP = ZZTPP_ZSTZ_HEAD-BTBHA+0(2)
WHERE AUFNR = LW_CPDDH
AND RMZHL = LW_RMZHL-RMZHL.
ELSE.
LV_FLAG = 'X'.
ROLLBACK WORK.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = SY-LANGU
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = LV_MESSTAB
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
MESSAGE LV_MESSTAB TYPE 'I'.
* MESSAGE '错误:工时未成功过账!' TYPE 'I'.
EXIT.
ENDIF.
ENDLOOP.
IF LV_FLAG = 'X'.
EXIT.
ENDIF.
*更新头信息
ZZTPP_ZSTZ_HEAD-GZ = 'Y'.
UPDATE ZZTPP_ZSTZ_HEAD
SET GZ = 'Y'
BUDAT = ZZTPP_ZSTZ_HEAD-BUDAT
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LOOP AT SCREEN.
IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
SCREEN-INPUT = '1' .
MODIFY SCREEN.
ENDIF.
ENDLOOP.
COMMIT WORK.
MESSAGE '工时过账成功!' TYPE 'S'.
" Fill the dynamic table <fs_dyn_tab3>
SELECT MATNR MAKTX CPDDH LGORT HGPZL BHGPZL DJYPZL
CPCCHEJ FGP YLCCHJ CPCL YLFT BXFX JQFT RGFT YDFT
FROM ZZTPP_ZSTZ_BODY3 INTO TABLE <FS_DYN_TAB3>
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CALL METHOD OBJ_MY_ALV_GRID3->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDIF.
ENDFORM. " POSTH_DATA
*&---------------------------------------------------------------------*
*& Form POST1_DATA
*&---------------------------------------------------------------------*
* 原料数据过账
*----------------------------------------------------------------------*
FORM POST1_DATA .
DATA:LW_GOODSMVT_HEADER TYPE BAPI2017_GM_HEAD_01,
LW_GOODSMVT_CODE TYPE BAPI2017_GM_CODE,
LW_GOODSMVT_HEADRET TYPE BAPI2017_GM_HEAD_RET,
LW_MATERIALDOCUMENT TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
LW_MATDOCUMENTYEAR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR,
LT_GOODSMVT_ITEM TYPE STANDARD TABLE OF BAPI2017_GM_ITEM_CREATE,
LW_GOODSMVT_ITEM TYPE BAPI2017_GM_ITEM_CREATE,
LT_RETURN TYPE STANDARD TABLE OF BAPIRET2,
LW_RETURN TYPE BAPIRET2.
DATA:LW_P1_BODY1 TYPE ZZTPP_ZSTZ_BODY1,
LW_P1_BODY3 TYPE ZZTPP_ZSTZ_BODY3.
DATA:LW_AUFNR TYPE AUFNR.
DATA:LW_YLZL TYPE ZZLMS.
*------------------------------
DATA :
LV_RECORDS TYPE I, "订单数
LV_TIMES TYPE I, "循环次数
LV_AMOUNT TYPE ERFMG."重量累计
*------------------------------
GV_TITLE = '过账确认'.
GV_TXT_QA = '是否过账'.
IF ZZTPP_ZSTZ_HEAD-GZ <> 'Y'.
MESSAGE S001(00) WITH '工时未过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
REFRESH GT_BODY2.
SELECT * INTO TABLE GT_BODY2
FROM ZZTPP_ZSTZ_BODY2
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND GZ = ''.
IF SY-SUBRC = 0.
MESSAGE S001(00) WITH '返工品未过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
REFRESH GT_BODY4.
SELECT * INTO TABLE GT_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND GZ = ''.
IF SY-SUBRC = 0.
MESSAGE S001(00) WITH '余料未过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
REFRESH GT_BODY5.
SELECT * INTO TABLE GT_BODY5
FROM ZZTPP_ZSTZ_BODY5
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND GZ = ''.
IF SY-SUBRC = 0.
MESSAGE S001(00) WITH '包装物未过账!' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
* 确认是否过账数据
PERFORM COFIRM_ACTION USING GV_TITLE
GV_TXT_QA
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
"过账日期写入head不能修改
*******Change at + 20120613
* UPDATE ZZTPP_ZSTZ_HEAD
* SET BUDAT = ZZTPP_ZSTZ_HEAD-BUDAT
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '1' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
*原料
REFRESH GT_BODY1.
SELECT * INTO TABLE GT_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR :LW_P1_BODY1,
GW_BODY1_SUM.
LOOP AT GT_BODY1 INTO LW_P1_BODY1.
GW_BODY1_SUM = GW_BODY1_SUM + LW_P1_BODY1-ZL.
ENDLOOP.
*成品
REFRESH GT_BODY3.
SELECT * INTO TABLE GT_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR: LW_P1_BODY3,
GW_BODY3_SUM.
LOOP AT GT_BODY3 INTO LW_P1_BODY3.
GW_BODY3_SUM = GW_BODY3_SUM + LW_P1_BODY3-YLCCHJ.
ENDLOOP.
REFRESH LT_RETURN.
REFRESH GT_MESSAGE.
CLEAR GW_MESSAGE.
CLEAR LW_P1_BODY1.
"bapi抬头参数
CLEAR LW_GOODSMVT_HEADER.
LW_GOODSMVT_HEADER-PSTNG_DATE = ZZTPP_ZSTZ_HEAD-BUDAT.
LW_GOODSMVT_HEADER-DOC_DATE = ZZTPP_ZSTZ_HEAD-BUDAT.
LW_GOODSMVT_HEADER-PR_UNAME = SY-UNAME.
LW_GOODSMVT_HEADER-HEADER_TXT = ZZTPP_ZSTZ_HEAD-BTBHA."台班编号
CLEAR:LW_GOODSMVT_HEADRET,
LW_MATERIALDOCUMENT,
LW_MATDOCUMENTYEAR,
LW_GOODSMVT_ITEM.
REFRESH LT_GOODSMVT_ITEM.
CLEAR : LV_RECORDS.
DESCRIBE TABLE GT_BODY3 LINES LV_RECORDS.
LOOP AT GT_BODY1 INTO LW_P1_BODY1 WHERE GZ <> 'Y'.
*mb1a,移动类型261
CLEAR LW_P1_BODY3.
CLEAR LV_AMOUNT.
CLEAR LV_TIMES.
*分摊原料到订单
LOOP AT GT_BODY3 INTO LW_P1_BODY3.
LV_TIMES = LV_TIMES + 1.
IF LW_P1_BODY3-YLCCHJ = 0 OR LW_P1_BODY3-YLCCHJ IS INITIAL.
CONTINUE.
ENDIF.
IF LV_TIMES = LV_RECORDS.
LW_GOODSMVT_ITEM-PLANT = '1201'."工厂
LW_GOODSMVT_ITEM-STGE_LOC = LW_P1_BODY1-LGORT."库存地点
LW_GOODSMVT_ITEM-MOVE_TYPE = '261'."移动类型
LW_GOODSMVT_ITEM-ENTRY_QNT = LW_P1_BODY1-ZL - LV_AMOUNT.
LW_GOODSMVT_ITEM-ENTRY_UOM = 'KG'."单位
LW_GOODSMVT_ITEM-ORDERID = LW_P1_BODY3-CPDDH."订单号
LW_GOODSMVT_ITEM-MATERIAL = LW_P1_BODY1-YLDM."原料代码
LW_GOODSMVT_ITEM-BATCH = LW_P1_BODY1-YLPH."原料批号
SELECT SINGLE RSNUM RSPOS " 预留编号,预留项目编号
INTO (LW_GOODSMVT_ITEM-RESERV_NO,LW_GOODSMVT_ITEM-RES_ITEM)
FROM RESB
WHERE AUFNR = LW_P1_BODY3-CPDDH
AND MATNR = LW_P1_BODY1-YLDM
AND XWAOK = 'X'."可移动过账的预留才可以扣除
"modify by maojian at 2012-10-25
IF SY-SUBRC <> 0.
CLEAR : LW_GOODSMVT_ITEM-RESERV_NO,
LW_GOODSMVT_ITEM-RES_ITEM.
ENDIF.
APPEND LW_GOODSMVT_ITEM TO LT_GOODSMVT_ITEM.
ELSE.
LW_GOODSMVT_ITEM-PLANT = '1201'."工厂
LW_GOODSMVT_ITEM-STGE_LOC = LW_P1_BODY1-LGORT."库存地点
LW_GOODSMVT_ITEM-MOVE_TYPE = '261'."移动类型
*----------------------分摊数量------------------------
* LW_YLZL = LW_P1_BODY1-ZL * ( LW_P1_BODY3-YLCCHJ / GW_BODY3_SUM ).
* LW_GOODSMVT_ITEM-ENTRY_QNT = LW_YLZL ."数量
LW_GOODSMVT_ITEM-ENTRY_QNT =
LW_P1_BODY1-ZL * ( LW_P1_BODY3-YLCCHJ / GW_BODY3_SUM ).
LV_AMOUNT = LV_AMOUNT + LW_GOODSMVT_ITEM-ENTRY_QNT. "分摊重量累加
LW_GOODSMVT_ITEM-ENTRY_UOM = 'KG'."单位
LW_GOODSMVT_ITEM-ORDERID = LW_P1_BODY3-CPDDH."订单号
LW_GOODSMVT_ITEM-MATERIAL = LW_P1_BODY1-YLDM."原料代码
LW_GOODSMVT_ITEM-BATCH = LW_P1_BODY1-YLPH."原料批号
SELECT SINGLE RSNUM RSPOS " 预留编号,预留项目编号
INTO (LW_GOODSMVT_ITEM-RESERV_NO,LW_GOODSMVT_ITEM-RES_ITEM)
FROM RESB
WHERE AUFNR = LW_P1_BODY3-CPDDH
AND MATNR = LW_P1_BODY1-YLDM
AND XWAOK = 'X'. "可移动过账的预留才可以扣除
"modify by maojian at 2012-10-25
IF SY-SUBRC <> 0.
CLEAR : LW_GOODSMVT_ITEM-RESERV_NO,
LW_GOODSMVT_ITEM-RES_ITEM.
ENDIF.
APPEND LW_GOODSMVT_ITEM TO LT_GOODSMVT_ITEM.
ENDIF.
ENDLOOP.
ENDLOOP.
IF LT_GOODSMVT_ITEM IS NOT INITIAL.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = LW_GOODSMVT_HEADER
GOODSMVT_CODE = '03'
IMPORTING
GOODSMVT_HEADRET = LW_GOODSMVT_HEADRET
MATERIALDOCUMENT = LW_MATERIALDOCUMENT
MATDOCUMENTYEAR = LW_MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = LT_GOODSMVT_ITEM
RETURN = LT_RETURN.
IF LW_MATERIALDOCUMENT IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LOOP AT GT_BODY1 INTO LW_P1_BODY1 WHERE GZ <> 'Y'.
UPDATE ZZTPP_ZSTZ_BODY1
SET GZ = 'Y'
ROWCOLOR = 'C410'
MBLNR = LW_MATERIALDOCUMENT
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND YLDM = LW_P1_BODY1-YLDM
AND YLPH = LW_P1_BODY1-YLPH
AND LGORT = LW_P1_BODY1-LGORT.
ENDLOOP.
IF GW_MESSAGE IS INITIAL.
CONCATENATE '凭证'LW_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' '凭证'LW_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ENDIF.
*******Change at + 20120613
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '0' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
SORT LT_RETURN BY TYPE ID NUMBER.
DELETE ADJACENT DUPLICATES FROM LT_RETURN COMPARING TYPE ID NUMBER.
CLEAR LW_RETURN.
LOOP AT LT_RETURN INTO LW_RETURN .
IF GW_MESSAGE IS INITIAL.
GW_MESSAGE-MESSAGE = LW_RETURN-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' LW_RETURN-MESSAGE
INTO GW_MESSAGE-MESSAGE .
ENDIF.
ENDLOOP.
MESSAGE GW_MESSAGE-MESSAGE TYPE 'I'.
EXIT.
ENDIF.
ENDIF.
*原料分摊
CLEAR LW_P1_BODY3.
LOOP AT GT_BODY3 INTO LW_P1_BODY3.
LW_P1_BODY3-YLFT = GW_BODY1_SUM * ( LW_P1_BODY3-YLCCHJ / GW_BODY3_SUM ).
UPDATE ZZTPP_ZSTZ_BODY3
SET YLFT = LW_P1_BODY3-YLFT
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND MATNR = LW_P1_BODY3-MATNR
AND CPDDH = LW_P1_BODY3-CPDDH
AND LGORT = LW_P1_BODY3-LGORT.
ENDLOOP.
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
COMMIT WORK.
" Fill the dynamic table <fs_dyn_tab1>
* SELECT YLDM YLMS YLPH LGORT ZL
* FROM ZZTPP_ZSTZ_BODY1 INTO TABLE <FS_DYN_TAB1>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
" Fill the dynamic table <fs_dyn_tab3>
* SELECT MATNR MAKTX CPDDH LGORT HGPZL BHGPZL DJYPZL
* CPCCHEJ FGP YLCCHJ CPCL YLFT BXFX JQFT RGFT YDFT
* FROM ZZTPP_ZSTZ_BODY3 INTO TABLE <FS_DYN_TAB3>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
PERFORM FILL_DYNAMIC_TABLE.
* SORT LT_RETURN BY TYPE ID NUMBER.
* DELETE ADJACENT DUPLICATES FROM LT_RETURN COMPARING TYPE ID NUMBER.
* CLEAR LW_RETURN.
* LOOP AT LT_RETURN INTO LW_RETURN .
* CONCATENATE GW_MESSAGE LW_RETURN-MESSAGE
* INTO GW_MESSAGE SEPARATED BY ';' .
* ENDLOOP.
MESSAGE GW_MESSAGE-MESSAGE TYPE 'S'.
"刷新数据
CALL METHOD OBJ_MY_ALV_GRID1->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID3->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDFORM. " POST1_DATA
*&---------------------------------------------------------------------*
*& Form POST2_DATA
*&---------------------------------------------------------------------*
* 返工品数据过账
*----------------------------------------------------------------------*
FORM POST2_DATA .
DATA: LW_P2_BODY2 TYPE ZZTPP_ZSTZ_BODY2,
LW_P2_BODY3 TYPE ZZTPP_ZSTZ_BODY3.
DATA:LW_P2_GOODSMVT_HEADER TYPE BAPI2017_GM_HEAD_01,
LW_P2_GOODSMVT_HEADRET TYPE BAPI2017_GM_HEAD_RET,
LW_P2_MATERIALDOCUMENT TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
LW_P2_MATDOCUMENTYEAR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR,
LT_P2_GOODSMVT_ITEM TYPE STANDARD TABLE OF BAPI2017_GM_ITEM_CREATE,
LW_P2_GOODSMVT_ITEM TYPE BAPI2017_GM_ITEM_CREATE,
LT_P2_RETURN TYPE STANDARD TABLE OF BAPIRET2,
LW_P2_RETURN TYPE BAPIRET2.
DATA: LW_P2_POSNR TYPE CO_POSNR.
IF ZZTPP_ZSTZ_HEAD-GZ <> 'Y'.
MESSAGE S001(00) WITH '工时未过帐!' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
GV_TITLE = '过账确认'.
GV_TXT_QA = '是否过账'.
* 确认是否过账数据
PERFORM COFIRM_ACTION USING GV_TITLE
GV_TXT_QA
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
"过账日期写入head不能修改
*******Change at + 20120613
* UPDATE ZZTPP_ZSTZ_HEAD
* SET BUDAT = ZZTPP_ZSTZ_HEAD-BUDAT
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '1' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
REFRESH GT_MESSAGE.
CLEAR GW_MESSAGE.
*bapi抬头参数
CLEAR LW_P2_GOODSMVT_HEADER.
LW_P2_GOODSMVT_HEADER-PSTNG_DATE = ZZTPP_ZSTZ_HEAD-BUDAT.
LW_P2_GOODSMVT_HEADER-DOC_DATE = ZZTPP_ZSTZ_HEAD-BUDAT.
LW_P2_GOODSMVT_HEADER-PR_UNAME = SY-UNAME.
LW_P2_GOODSMVT_HEADER-HEADER_TXT = ZZTPP_ZSTZ_HEAD-BTBHA."台班编号
*取返工品信息
REFRESH GT_BODY2.
SELECT * INTO TABLE GT_BODY2
FROM ZZTPP_ZSTZ_BODY2
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
REFRESH LT_P2_GOODSMVT_ITEM.
CLEAR:LW_P2_BODY2,
LW_P2_GOODSMVT_HEADRET,
LW_P2_MATERIALDOCUMENT,
LW_P2_MATDOCUMENTYEAR,
LW_P2_GOODSMVT_ITEM.
*----------------------同订单,MB31,移动类型122---------------------
LOOP AT GT_BODY2 INTO LW_P2_BODY2 WHERE GZ <> 'Y'.
IF LW_P2_BODY2-YDDH = LW_P2_BODY2-FGDDH.
"同订单,MB31,移动类型122
LW_P2_GOODSMVT_ITEM-PLANT = '1201'."工厂别
LW_P2_GOODSMVT_ITEM-STGE_LOC = LW_P2_BODY2-LGORT. "库位
LW_P2_GOODSMVT_ITEM-MOVE_TYPE = '122'. "移动类型
LW_P2_GOODSMVT_ITEM-BATCH = LW_P2_BODY2-FGOPH."批号
LW_P2_GOODSMVT_ITEM-ENTRY_QNT = LW_P2_BODY2-ZL."数量
LW_P2_GOODSMVT_ITEM-ENTRY_UOM = 'KG'. "单位
LW_P2_GOODSMVT_ITEM-ORDERID = LW_P2_BODY2-FGDDH. "订单号
SELECT SINGLE POSNR INTO LW_P2_POSNR
FROM AFPO
WHERE AUFNR = LW_P2_BODY2-FGDDH
AND MATNR = LW_P2_BODY2-FGPDM.
LW_P2_GOODSMVT_ITEM-ORDER_ITNO = LW_P2_POSNR."订单项目编号
LW_P2_GOODSMVT_ITEM-MOVE_REAS = '0002'."移动原因
LW_P2_GOODSMVT_ITEM-MVT_IND = 'F'. "移动标识
APPEND LW_P2_GOODSMVT_ITEM TO LT_P2_GOODSMVT_ITEM.
ENDIF.
ENDLOOP.
IF LT_P2_GOODSMVT_ITEM IS NOT INITIAL .
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = LW_P2_GOODSMVT_HEADER
GOODSMVT_CODE = '02'
IMPORTING
GOODSMVT_HEADRET = LW_P2_GOODSMVT_HEADRET
MATERIALDOCUMENT = LW_P2_MATERIALDOCUMENT
MATDOCUMENTYEAR = LW_P2_MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = LT_P2_GOODSMVT_ITEM
RETURN = LT_P2_RETURN.
IF LW_P2_MATERIALDOCUMENT IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LOOP AT GT_BODY2 INTO LW_P2_BODY2 WHERE GZ <> 'Y'.
IF LW_P2_BODY2-YDDH = LW_P2_BODY2-FGDDH.
UPDATE ZZTPP_ZSTZ_BODY2
SET GZ = 'Y'
ROWCOLOR = 'C410'
MBLNR = LW_P2_MATERIALDOCUMENT
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND FGPDM = LW_P2_BODY2-FGPDM
AND FGOPH = LW_P2_BODY2-FGOPH
AND LGORT = LW_P2_BODY2-LGORT.
ENDIF.
ENDLOOP.
*******Change at + 20120613
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '0' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
IF GW_MESSAGE IS INITIAL.
CONCATENATE '凭证'LW_P2_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' '凭证'LW_P2_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ENDIF.
CALL FUNCTION 'DEQUEUE_ALL'
* EXPORTING
* _SYNCHRON = ' '
.
*******Change at + 20120614
ELSE.
ROLLBACK WORK .
CLEAR : GW_MESSAGE-MESSAGE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
SORT LT_P2_RETURN BY TYPE ID NUMBER.
DELETE ADJACENT DUPLICATES FROM LT_P2_RETURN COMPARING TYPE ID NUMBER.
CLEAR LW_P2_RETURN.
LOOP AT LT_P2_RETURN INTO LW_P2_RETURN .
IF GW_MESSAGE IS INITIAL.
GW_MESSAGE-MESSAGE = LW_P2_RETURN-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' LW_P2_RETURN-MESSAGE
INTO GW_MESSAGE-MESSAGE .
ENDIF.
ENDLOOP.
MESSAGE GW_MESSAGE-MESSAGE TYPE 'I'.
EXIT.
ENDIF.
ENDIF.
*-----------------------不同订单,MB1A,移动类型261-------------------------
REFRESH LT_P2_GOODSMVT_ITEM.
CLEAR:LW_P2_BODY2,
LW_P2_GOODSMVT_HEADRET,
LW_P2_MATERIALDOCUMENT,
LW_P2_MATDOCUMENTYEAR,
LW_P2_GOODSMVT_ITEM.
LOOP AT GT_BODY2 INTO LW_P2_BODY2 WHERE GZ <> 'Y' ."不同订单,MB1A,移动类型261
IF LW_P2_BODY2-YDDH <> LW_P2_BODY2-FGDDH.
LW_P2_GOODSMVT_ITEM-PLANT = '1201'."工厂
LW_P2_GOODSMVT_ITEM-STGE_LOC = LW_P2_BODY2-LGORT."库存地点
LW_P2_GOODSMVT_ITEM-MOVE_TYPE = '261'."移动类型
LW_P2_GOODSMVT_ITEM-ENTRY_QNT = LW_P2_BODY2-ZL ."数量
LW_P2_GOODSMVT_ITEM-ENTRY_UOM = 'KG'."单位
LW_P2_GOODSMVT_ITEM-ORDERID = LW_P2_BODY2-FGDDH."订单号
LW_P2_GOODSMVT_ITEM-MATERIAL = LW_P2_BODY2-FGPDM."代码
LW_P2_GOODSMVT_ITEM-BATCH = LW_P2_BODY2-FGOPH."批号
SELECT SINGLE RSNUM RSPOS " 预留编号,预留项目编号
INTO (LW_P2_GOODSMVT_ITEM-RESERV_NO,LW_P2_GOODSMVT_ITEM-RES_ITEM)
FROM RESB
WHERE AUFNR = LW_P2_BODY2-FGDDH
AND MATNR = LW_P2_BODY2-FGPDM
AND XWAOK = 'X'.
* AND XWAOK = 'X'."允许物料移动
"modify by maojian at 2012-10-25
IF SY-SUBRC <> 0.
CLEAR : LW_P2_GOODSMVT_ITEM-RESERV_NO,
LW_P2_GOODSMVT_ITEM-RES_ITEM.
ENDIF.
APPEND LW_P2_GOODSMVT_ITEM TO LT_P2_GOODSMVT_ITEM.
ENDIF.
ENDLOOP.
IF LT_P2_GOODSMVT_ITEM IS NOT INITIAL.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = LW_P2_GOODSMVT_HEADER
GOODSMVT_CODE = '03'
IMPORTING
GOODSMVT_HEADRET = LW_P2_GOODSMVT_HEADRET
MATERIALDOCUMENT = LW_P2_MATERIALDOCUMENT
MATDOCUMENTYEAR = LW_P2_MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = LT_P2_GOODSMVT_ITEM
RETURN = LT_P2_RETURN.
IF LW_P2_MATERIALDOCUMENT IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LOOP AT GT_BODY2 INTO LW_P2_BODY2 WHERE GZ <> 'Y'.
IF LW_P2_BODY2-YDDH <> LW_P2_BODY2-FGDDH.
UPDATE ZZTPP_ZSTZ_BODY2
SET GZ = 'Y'
ROWCOLOR = 'C410'
MBLNR = LW_P2_MATERIALDOCUMENT
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND FGPDM = LW_P2_BODY2-FGPDM
AND FGOPH = LW_P2_BODY2-FGOPH
AND LGORT = LW_P2_BODY2-LGORT.
ENDIF.
ENDLOOP.
*******Change at + 20120613
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '0' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
IF GW_MESSAGE IS INITIAL.
CONCATENATE '凭证'LW_P2_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' '凭证'LW_P2_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ENDIF.
*******Change at + 20120614
ELSE.
ROLLBACK WORK .
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
SORT LT_P2_RETURN BY TYPE ID NUMBER.
DELETE ADJACENT DUPLICATES FROM LT_P2_RETURN COMPARING TYPE ID NUMBER.
CLEAR LW_P2_RETURN.
LOOP AT LT_P2_RETURN INTO LW_P2_RETURN .
IF GW_MESSAGE IS INITIAL.
GW_MESSAGE-MESSAGE = LW_P2_RETURN-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' LW_P2_RETURN-MESSAGE
INTO GW_MESSAGE-MESSAGE .
ENDIF.
ENDLOOP.
MESSAGE GW_MESSAGE-MESSAGE TYPE 'I'.
EXIT.
ENDIF.
ENDIF.
*返工品变动,成品中 ‘返工品’ ‘原料产出合计’ ‘产量’ 均随之发生改变
PERFORM FRM_FGP_UPDATE.
* REFRESH GT_BODY2.
* REFRESH GT_FGDDH."返工品汇总表
* REFRESH GT_XTDD."返工品原订单号=返工到订单号时, 成品产量中扣除相应数额
*
**取返工品信息
* SELECT *
* FROM ZZTPP_ZSTZ_BODY2
* INTO TABLE GT_BODY2
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
*
**汇总
* CLEAR LW_P2_BODY2.
* LOOP AT GT_BODY2 INTO LW_P2_BODY2.
* IF LW_P2_BODY2-YDDH = LW_P2_BODY2-FGDDH.
* GW_XTDD-YDDH = LW_P2_BODY2-YDDH.
* GW_XTDD-FGDDH = LW_P2_BODY2-FGDDH.
* GW_XTDD-ZL = LW_P2_BODY2-ZL.
* COLLECT GW_XTDD INTO GT_XTDD.
* ENDIF.
* GW_FGDDH-FGDDH = LW_P2_BODY2-FGDDH.
* GW_FGDDH-ZL = LW_P2_BODY2-ZL.
* COLLECT GW_FGDDH INTO GT_FGDDH.
* ENDLOOP.
*
* CLEAR LW_P2_BODY3.
* LOOP AT GT_FGDDH INTO GW_FGDDH.
* SELECT SINGLE * INTO LW_P2_BODY3
* FROM ZZTPP_ZSTZ_BODY3
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
* AND CPDDH = GW_FGDDH-FGDDH.
* IF SY-SUBRC = 0.
* LW_P2_BODY3-FGP = GW_FGDDH-ZL.
**原料产出合计 = 成品产出合计 - 返工品重量
* LW_P2_BODY3-YLCCHJ = LW_P2_BODY3-CPCCHEJ - LW_P2_BODY3-FGP.
* ENDIF.
* UPDATE ZZTPP_ZSTZ_BODY3
* SET FGP = LW_P2_BODY3-FGP
* YLCCHJ = LW_P2_BODY3-YLCCHJ
* WHERE BTBHA = LW_P2_BODY3-BTBHA
* AND MATNR = LW_P2_BODY3-MATNR
* AND CPDDH = LW_P2_BODY3-CPDDH
* AND LGORT = LW_P2_BODY3-LGORT.
* ENDLOOP.
*
* CLEAR LW_P2_BODY3.
* CLEAR GW_XTDD.
* REFRESH GT_BODY3.
**取成品信息
* SELECT * INTO TABLE GT_BODY3
* FROM ZZTPP_ZSTZ_BODY3
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
**返工品原订单号 = 返工到订单号
* IF GT_XTDD IS INITIAL .
* LOOP AT GT_BODY3 INTO LW_P2_BODY3 .
* LW_P2_BODY3-CPCL = LW_P2_BODY3-CPCCHEJ.
* UPDATE ZZTPP_ZSTZ_BODY3
* SET CPCL = LW_P2_BODY3-CPCL
* WHERE BTBHA = LW_P2_BODY3-BTBHA
* AND MATNR = LW_P2_BODY3-MATNR
* AND CPDDH = LW_P2_BODY3-CPDDH
* AND LGORT = LW_P2_BODY3-LGORT.
* ENDLOOP.
* ELSE.
* LOOP AT GT_XTDD INTO GW_XTDD.
* SELECT SINGLE * INTO LW_P2_BODY3
* FROM ZZTPP_ZSTZ_BODY3
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
* AND CPDDH = GW_XTDD-YDDH.
* IF SY-SUBRC = 0.
* LW_P2_BODY3-CPCL = LW_P2_BODY3-CPCCHEJ - GW_XTDD-ZL.
* ELSE.
* LW_P2_BODY3-CPCL = LW_P2_BODY3-CPCCHEJ.
* ENDIF.
* UPDATE ZZTPP_ZSTZ_BODY3
* SET CPCL = LW_P2_BODY3-CPCL
* WHERE BTBHA = LW_P2_BODY3-BTBHA
* AND MATNR = LW_P2_BODY3-MATNR
* AND CPDDH = LW_P2_BODY3-CPDDH
* AND LGORT = LW_P2_BODY3-LGORT.
* ENDLOOP.
* ENDIF.
*更新头信息
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
COMMIT WORK.
** Fill the dynamic table <fs_dyn_tab2>
* SELECT FGPDM FGPMS FGOPH YDDH FGDDH LGORT ZL
* FROM ZZTPP_ZSTZ_BODY2 INTO TABLE <FS_DYN_TAB2>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
** Fill the dynamic table <fs_dyn_tab3>
* SELECT MATNR MAKTX CPDDH LGORT HGPZL BHGPZL DJYPZL
* CPCCHEJ FGP YLCCHJ CPCL YLFT BXFX JQFT RGFT YDFT
* FROM ZZTPP_ZSTZ_BODY3 INTO TABLE <FS_DYN_TAB3>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
PERFORM FILL_DYNAMIC_TABLE.
*******Change at + 20120614
* SORT LT_P2_RETURN BY TYPE ID NUMBER.
* DELETE ADJACENT DUPLICATES FROM LT_P2_RETURN COMPARING TYPE ID NUMBER.
* LOOP AT LT_P2_RETURN INTO LW_P2_RETURN .
* CONCATENATE GW_MESSAGE LW_P2_RETURN-MESSAGE
* INTO GW_MESSAGE SEPARATED BY ';' .
* ENDLOOP.
MESSAGE GW_MESSAGE-MESSAGE TYPE 'S'.
"刷新alv
CALL METHOD OBJ_MY_ALV_GRID2->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID3->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDFORM. " POST2_DATA
*&---------------------------------------------------------------------*
*& Form POST3_DATA
*&---------------------------------------------------------------------*
* 余料数据过账
*----------------------------------------------------------------------*
FORM POST3_DATA .
DATA: LW_P3_BODY3 TYPE ZZTPP_ZSTZ_BODY3,
LW_P3_BODY4 TYPE ZZTPP_ZSTZ_BODY4.
DATA:LW_P3_GOODSMVT_HEADER TYPE BAPI2017_GM_HEAD_01,
LW_P3_GOODSMVT_HEADRET TYPE BAPI2017_GM_HEAD_RET,
LW_P3_MATERIALDOCUMENT TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
LW_P3_MATDOCUMENTYEAR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR,
LT_P3_GOODSMVT_ITEM TYPE STANDARD TABLE OF BAPI2017_GM_ITEM_CREATE,
LW_P3_GOODSMVT_ITEM TYPE BAPI2017_GM_ITEM_CREATE,
LT_P3_RETURN TYPE STANDARD TABLE OF BAPIRET2,
LW_P3_RETURN TYPE BAPIRET2.
DATA:LW_P3_YLZL TYPE ZZLMS,
LW_P3_POSNR TYPE CO_POSNR.
DATA:LR_STR1(6) VALUE '混凝土',
LR_STR2(4) VALUE '余料',
LR_STR3(4) VALUE '尾料'.
*******Change at + 20120613
DATA:LV_STATUS TYPE C.
DATA:LV_I_TAB TYPE STANDARD TABLE OF ZZTPP_ZSTZ_BODY4,
LV_WA_TAB TYPE ZZTPP_ZSTZ_BODY4.
GV_TITLE = '过账确认'.
GV_TXT_QA = '是否过账'.
IF ZZTPP_ZSTZ_HEAD-GZ <> 'Y'.
MESSAGE S001(00) WITH '工时未过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
REFRESH GT_BODY2.
SELECT * INTO TABLE GT_BODY2
FROM ZZTPP_ZSTZ_BODY2
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND GZ = ''.
IF SY-SUBRC = 0.
MESSAGE S001(00) WITH '返工品未过帐!' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDIF.
* 确认是否过账数据
PERFORM COFIRM_ACTION USING GV_TITLE
GV_TXT_QA
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
"过账日期写入head不能修改
*******Change at + 20120613
* UPDATE ZZTPP_ZSTZ_HEAD
* SET BUDAT = ZZTPP_ZSTZ_HEAD-BUDAT
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '1' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
REFRESH GT_BODY4.
SELECT * INTO TABLE GT_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
*余料/波纤合计
CLEAR LW_P3_BODY4.
CLEAR GW_BODY4_SUM.
LOOP AT GT_BODY4 INTO LW_P3_BODY4.
* 铜棉扣除废料
* IF LW_P3_BODY4-YLDM+8 = '3010300000' OR
* LW_P3_BODY4-YLDM+8 = '3010400000' OR
* LW_P3_BODY4-YLDM+8 = '3100300000' OR
* LW_P3_BODY4-YLDM+8 = '3100100000' OR
* LW_P3_BODY4-YLDM+8 = '3100900000' .
* CONTINUE.
* ENDIF.
GW_BODY4_SUM = GW_BODY4_SUM + LW_P3_BODY4-YLZL.
ENDLOOP.
REFRESH GT_BODY3.
SELECT * INTO TABLE GT_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* 原料产出合计
CLEAR: LW_P3_BODY3,GW_BODY3_SUM.
LOOP AT GT_BODY3 INTO LW_P3_BODY3.
GW_BODY3_SUM = GW_BODY3_SUM + LW_P3_BODY3-YLCCHJ.
ENDLOOP.
*Bapi抬头参数
CLEAR LW_P3_GOODSMVT_HEADER.
LW_P3_GOODSMVT_HEADER-PSTNG_DATE = ZZTPP_ZSTZ_HEAD-BUDAT.
LW_P3_GOODSMVT_HEADER-DOC_DATE = ZZTPP_ZSTZ_HEAD-BUDAT.
LW_P3_GOODSMVT_HEADER-PR_UNAME = SY-UNAME.
LW_P3_GOODSMVT_HEADER-HEADER_TXT = ZZTPP_ZSTZ_HEAD-BTBHA."台班编号
***********************************有订单项目**************************************************
* CLEAR : LV_STATUS.
* REFRESH LT_P3_RETURN.
* CLEAR LW_P3_RETURN.
* CLEAR GW_MESSAGE.
* CLEAR LW_P3_BODY4.
* REFRESH LT_P3_GOODSMVT_ITEM.
* CLEAR:LW_P3_GOODSMVT_HEADRET,
* LW_P3_MATERIALDOCUMENT,
* LW_P3_MATDOCUMENTYEAR,
* LW_P3_GOODSMVT_ITEM.
*
* LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
** IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'H' AND ( LW_P3_BODY4-YLDM+8 = '3010300000' OR
** LW_P3_BODY4-YLDM+8 = '3010400000' OR
** LW_P3_BODY4-YLDM+8 = '3100300000' OR
** LW_P3_BODY4-YLDM+8 = '3100100000' OR
** LW_P3_BODY4-YLDM+8 = '3100900000' ).
** CONTINUE.
** ENDIF.
* IF LW_P3_BODY4-YLDM+8 = '3010300000' OR
* LW_P3_BODY4-YLDM+8 = '3010400000' OR
* LW_P3_BODY4-YLDM+8 = '3100300000' OR
* LW_P3_BODY4-YLDM+8 = '3100100000' OR
* LW_P3_BODY4-YLDM+8 = '3100900000' .
* CONTINUE.
* ENDIF.
* SEARCH LW_P3_BODY4-YLMS FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤,mb31
* IF SY-SUBRC = 0.
* CLEAR LW_P3_BODY3.
* LOOP AT GT_BODY3 INTO LW_P3_BODY3.
**订单项目编号 :在订单组件中存在,根据项目编号进行MB31 101的收货
* SELECT SINGLE POSNR INTO LW_P3_POSNR
* FROM AFPO
* WHERE AUFNR = LW_P3_BODY3-CPDDH
* AND MATNR = LW_P3_BODY4-YLDM.
* IF SY-SUBRC = 0.
* LW_P3_GOODSMVT_ITEM-ORDER_ITNO = LW_P3_POSNR."订单项目编号
* LW_P3_GOODSMVT_ITEM-PLANT = '1201'."工厂
* LW_P3_GOODSMVT_ITEM-STGE_LOC = LW_P3_BODY4-LGORT."库存地点
* LW_P3_GOODSMVT_ITEM-MOVE_TYPE = '101'."移动类型
**--------------------------------------------------------
** LW_P3_YLZL = LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
** LW_P3_GOODSMVT_ITEM-ENTRY_QNT = LW_P3_YLZL."数量
* LW_P3_GOODSMVT_ITEM-ENTRY_QNT =
* LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
* LW_P3_GOODSMVT_ITEM-ENTRY_UOM = 'KG'."单位
* LW_P3_GOODSMVT_ITEM-ORDERID = LW_P3_BODY3-CPDDH."订单号
* LW_P3_GOODSMVT_ITEM-BATCH = LW_P3_BODY4-YLPH."批号
* LW_P3_GOODSMVT_ITEM-MVT_IND = 'F'."移动标示
* APPEND LW_P3_GOODSMVT_ITEM TO LT_P3_GOODSMVT_ITEM.
* ELSE.
**订单无此项目的情况
* LV_STATUS = 'X'.
* ENDIF.
* ENDLOOP.
* ENDIF.
* ENDLOOP.
*
* IF LT_P3_GOODSMVT_ITEM IS NOT INITIAL.
* CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
* EXPORTING
* GOODSMVT_HEADER = LW_P3_GOODSMVT_HEADER
* GOODSMVT_CODE = '02'
* IMPORTING
* GOODSMVT_HEADRET = LW_P3_GOODSMVT_HEADRET
* MATERIALDOCUMENT = LW_P3_MATERIALDOCUMENT
* MATDOCUMENTYEAR = LW_P3_MATDOCUMENTYEAR
* TABLES
* GOODSMVT_ITEM = LT_P3_GOODSMVT_ITEM
* RETURN = LT_P3_RETURN.
* IF LW_P3_MATERIALDOCUMENT IS NOT INITIAL.
* CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
* IF LV_STATUS <> 'X'.
* LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
* SEARCH LW_P3_BODY4-YLMS FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤,mb31
* IF SY-SUBRC = 0.
** SELECT SINGLE POSNR INTO LW_P3_POSNR
** FROM AFPO
** WHERE AUFNR = LW_P3_BODY3-CPDDH
** AND MATNR = LW_P3_BODY4-YLDM.
** IF SY-SUBRC = 0.
* UPDATE ZZTPP_ZSTZ_BODY4
* SET
* GZ = 'Y'
* ROWCOLOR = 'C410'
* MBLNR = LW_P3_MATERIALDOCUMENT
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
* AND YLDM = LW_P3_BODY4-YLDM
* AND YLPH = LW_P3_BODY4-YLPH
* AND LGORT = LW_P3_BODY4-LGORT.
** ENDIF.
* ENDIF.
* ENDLOOP.
* ENDIF.
********Change at + 20120613
** LOOP AT SCREEN.
** IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
** SCREEN-INPUT = '0' .
** MODIFY SCREEN.
** ENDIF.
** ENDLOOP.
* IF GW_MESSAGE IS INITIAL.
* CONCATENATE '凭证'LW_P3_MATERIALDOCUMENT '过账成功'
* INTO GW_MESSAGE-MESSAGE.
* ELSE.
* CONCATENATE GW_MESSAGE-MESSAGE ';' '凭证'LW_P3_MATERIALDOCUMENT '过账成功'
* INTO GW_MESSAGE-MESSAGE.
* ENDIF.
* CALL FUNCTION 'DEQUEUE_ALL'
** EXPORTING
** _SYNCHRON = ' '
* .
* ELSE.
* ROLLBACK WORK.
* CLEAR : GW_MESSAGE-MESSAGE.
* CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
* SORT LT_P3_RETURN BY TYPE ID NUMBER.
* DELETE ADJACENT DUPLICATES FROM LT_P3_RETURN COMPARING TYPE ID NUMBER.
* CLEAR LW_P3_RETURN.
* LOOP AT LT_P3_RETURN INTO LW_P3_RETURN .
* IF GW_MESSAGE IS INITIAL.
* GW_MESSAGE-MESSAGE = LW_P3_RETURN-MESSAGE.
* ELSE.
* CONCATENATE GW_MESSAGE-MESSAGE ';' LW_P3_RETURN-MESSAGE
* INTO GW_MESSAGE-MESSAGE .
* ENDIF.
* ENDLOOP.
* MESSAGE GW_MESSAGE-MESSAGE TYPE 'I'.
* EXIT.
* ENDIF.
* ENDIF.
*
*********************************无此订单项目***************************************************
********Change at + 20120601
* IF LV_STATUS = 'X'.
* REFRESH LT_P3_RETURN.
* CLEAR LW_P3_RETURN.
* CLEAR LW_P3_BODY4.
* REFRESH LT_P3_GOODSMVT_ITEM.
* CLEAR:LW_P3_GOODSMVT_HEADRET,
* LW_P3_MATERIALDOCUMENT,
* LW_P3_MATDOCUMENTYEAR,
* LW_P3_GOODSMVT_ITEM.
*
* LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
** IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'H' AND ( LW_P3_BODY4-YLDM+8 = '3010300000' OR
** LW_P3_BODY4-YLDM+8 = '3010400000' OR
** LW_P3_BODY4-YLDM+8 = '3100300000' OR
** LW_P3_BODY4-YLDM+8 = '3100100000' OR
** LW_P3_BODY4-YLDM+8 = '3100900000' ).
** CONTINUE.
** ENDIF.
* IF LW_P3_BODY4-YLDM+8 = '3010300000' OR
* LW_P3_BODY4-YLDM+8 = '3010400000' OR
* LW_P3_BODY4-YLDM+8 = '3100300000' OR
* LW_P3_BODY4-YLDM+8 = '3100100000' OR
* LW_P3_BODY4-YLDM+8 = '3100900000' .
* CONTINUE.
* ENDIF.
* SEARCH LW_P3_BODY4-YLMS FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤 ,MB1C
* IF SY-SUBRC = 0.
* CLEAR LW_P3_BODY3.
* LOOP AT GT_BODY3 INTO LW_P3_BODY3.
**订单项目编号 :在订单组件中不存在,MB1C 531收货
* SELECT SINGLE POSNR INTO LW_P3_POSNR
* FROM AFPO
* WHERE AUFNR = LW_P3_BODY3-CPDDH
* AND MATNR = LW_P3_BODY4-YLDM.
* IF SY-SUBRC <> 0.
* LW_P3_GOODSMVT_ITEM-PLANT = '1201'."工厂
* LW_P3_GOODSMVT_ITEM-STGE_LOC = LW_P3_BODY4-LGORT."库存地点
* LW_P3_GOODSMVT_ITEM-MOVE_TYPE = '531'."移动类型
* LW_P3_GOODSMVT_ITEM-MATERIAL = LW_P3_BODY4-YLDM."代码
** LW_P3_YLZL = LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
** LW_P3_GOODSMVT_ITEM-ENTRY_QNT = LW_P3_YLZL."数量
* LW_P3_GOODSMVT_ITEM-ENTRY_QNT =
* LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
* LW_P3_GOODSMVT_ITEM-ENTRY_UOM = 'KG'."单位
* LW_P3_GOODSMVT_ITEM-ORDERID = LW_P3_BODY3-CPDDH."订单号
* LW_P3_GOODSMVT_ITEM-BATCH = LW_P3_BODY4-YLPH."批号
* APPEND LW_P3_GOODSMVT_ITEM TO LT_P3_GOODSMVT_ITEM.
* ENDIF.
* ENDLOOP.
* ENDIF.
* ENDLOOP.
*
* IF LT_P3_GOODSMVT_ITEM IS NOT INITIAL.
* CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
* EXPORTING
* GOODSMVT_HEADER = LW_P3_GOODSMVT_HEADER
* GOODSMVT_CODE = '05'
* IMPORTING
* GOODSMVT_HEADRET = LW_P3_GOODSMVT_HEADRET
* MATERIALDOCUMENT = LW_P3_MATERIALDOCUMENT
* MATDOCUMENTYEAR = LW_P3_MATDOCUMENTYEAR
* TABLES
* GOODSMVT_ITEM = LT_P3_GOODSMVT_ITEM
* RETURN = LT_P3_RETURN.
* IF LW_P3_MATERIALDOCUMENT IS NOT INITIAL.
* CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
* LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
* SEARCH LW_P3_BODY4-YLMS FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤
* IF SY-SUBRC = 0.
** SELECT SINGLE POSNR INTO LW_P3_POSNR
** FROM AFPO
** WHERE AUFNR = LW_P3_BODY3-CPDDH
** AND MATNR = LW_P3_BODY4-YLDM.
** IF SY-SUBRC <> 0.
* UPDATE ZZTPP_ZSTZ_BODY4
* SET
** GZ = 'Y'
* ROWCOLOR = 'C410'
* MBLNR = LW_P3_MATERIALDOCUMENT
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
* AND YLDM = LW_P3_BODY4-YLDM
* AND YLPH = LW_P3_BODY4-YLPH
* AND LGORT = LW_P3_BODY4-LGORT.
** ENDIF.
* ENDIF.
* ENDLOOP.
********Change at + 20120613
** LOOP AT SCREEN.
** IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
** SCREEN-INPUT = '0' .
** MODIFY SCREEN.
** ENDIF.
** ENDLOOP.
* IF GW_MESSAGE IS INITIAL.
* CONCATENATE '凭证'LW_P3_MATERIALDOCUMENT '过账成功'
* INTO GW_MESSAGE-MESSAGE.
* ELSE.
* CONCATENATE GW_MESSAGE-MESSAGE ';' '凭证'LW_P3_MATERIALDOCUMENT '过账成功'
* INTO GW_MESSAGE-MESSAGE.
* ENDIF.
* ELSE.
* CLEAR : GW_MESSAGE-MESSAGE.
* ROLLBACK WORK.
* CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
* SORT LT_P3_RETURN BY TYPE ID NUMBER.
* DELETE ADJACENT DUPLICATES FROM LT_P3_RETURN COMPARING TYPE ID NUMBER.
* CLEAR LW_P3_RETURN.
* LOOP AT LT_P3_RETURN INTO LW_P3_RETURN .
* IF GW_MESSAGE IS INITIAL.
* GW_MESSAGE-MESSAGE = LW_P3_RETURN-MESSAGE.
* ELSE.
* CONCATENATE GW_MESSAGE-MESSAGE ';' LW_P3_RETURN-MESSAGE
* INTO GW_MESSAGE-MESSAGE .
* ENDIF.
* ENDLOOP.
* MESSAGE GW_MESSAGE-MESSAGE TYPE 'I'.
* EXIT.
* ENDIF.
* ENDIF.
* ENDIF.
**********************************有订单项目**************************************************
CLEAR : LV_STATUS.
REFRESH LT_P3_RETURN.
CLEAR LW_P3_RETURN.
CLEAR LW_P3_BODY4.
REFRESH LT_P3_GOODSMVT_ITEM.
CLEAR:LW_P3_GOODSMVT_HEADRET,
LW_P3_MATERIALDOCUMENT,
LW_P3_MATDOCUMENTYEAR,
LW_P3_GOODSMVT_ITEM.
LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
IF LW_P3_BODY4-YLDM+8 = '3010300000' OR
LW_P3_BODY4-YLDM+8 = '3010400000' OR
LW_P3_BODY4-YLDM+8 = '3100300000' OR
LW_P3_BODY4-YLDM+8 = '3100100000' OR
LW_P3_BODY4-YLDM+8 = '3100900000' .
CONTINUE.
ENDIF.
SEARCH LW_P3_BODY4-YLMS FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤,mb31
IF SY-SUBRC = 0.
CLEAR LW_P3_BODY3.
LOOP AT GT_BODY3 INTO LW_P3_BODY3.
*订单项目编号 :在订单组件中存在,根据项目编号进行MB31 101的收货
SELECT SINGLE POSNR INTO LW_P3_POSNR
FROM AFPO
WHERE AUFNR = LW_P3_BODY3-CPDDH
AND MATNR = LW_P3_BODY4-YLDM.
IF SY-SUBRC = 0.
LW_P3_GOODSMVT_ITEM-ORDER_ITNO = LW_P3_POSNR."订单项目编号
LW_P3_GOODSMVT_ITEM-PLANT = '1201'."工厂
LW_P3_GOODSMVT_ITEM-STGE_LOC = LW_P3_BODY4-LGORT."库存地点
LW_P3_GOODSMVT_ITEM-MOVE_TYPE = '101'."移动类型
*--------------------------------------------------------
* LW_P3_YLZL = LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
* LW_P3_GOODSMVT_ITEM-ENTRY_QNT = LW_P3_YLZL."数量
LW_P3_GOODSMVT_ITEM-ENTRY_QNT =
LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
LW_P3_GOODSMVT_ITEM-ENTRY_UOM = 'KG'."单位
LW_P3_GOODSMVT_ITEM-ORDERID = LW_P3_BODY3-CPDDH."订单号
LW_P3_GOODSMVT_ITEM-BATCH = LW_P3_BODY4-YLPH."批号
LW_P3_GOODSMVT_ITEM-MVT_IND = 'F'."移动标示
APPEND LW_P3_GOODSMVT_ITEM TO LT_P3_GOODSMVT_ITEM.
ELSE.
LV_STATUS = 'X'.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
IF LT_P3_GOODSMVT_ITEM IS NOT INITIAL.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = LW_P3_GOODSMVT_HEADER
GOODSMVT_CODE = '02'
IMPORTING
GOODSMVT_HEADRET = LW_P3_GOODSMVT_HEADRET
MATERIALDOCUMENT = LW_P3_MATERIALDOCUMENT
MATDOCUMENTYEAR = LW_P3_MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = LT_P3_GOODSMVT_ITEM
RETURN = LT_P3_RETURN.
IF LW_P3_MATERIALDOCUMENT IS NOT INITIAL.
* CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
* IMPORTING
* RETURN =
.
IF LV_STATUS <> 'X'.
LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
SEARCH LW_P3_BODY4-YLMS FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤,mb31
IF SY-SUBRC = 0.
* SELECT SINGLE POSNR INTO LW_P3_POSNR
* FROM AFPO
* WHERE AUFNR = LW_P3_BODY3-CPDDH
* AND MATNR = LW_P3_BODY4-YLDM.
* IF SY-SUBRC = 0.
IF LV_STATUS = ''.
UPDATE ZZTPP_ZSTZ_BODY4
SET
GZ = 'Y'
ROWCOLOR = 'C410'
MBLNR = LW_P3_MATERIALDOCUMENT
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND YLDM = LW_P3_BODY4-YLDM
AND YLPH = LW_P3_BODY4-YLPH
AND LGORT = LW_P3_BODY4-LGORT.
ENDIF.
* ENDIF.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
SEARCH LW_P3_BODY4-YLMS FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤,mb31
IF SY-SUBRC = 0.
* SELECT SINGLE POSNR INTO LW_P3_POSNR
* FROM AFPO
* WHERE AUFNR = LW_P3_BODY3-CPDDH
* AND MATNR = LW_P3_BODY4-YLDM.
* IF SY-SUBRC = 0.
UPDATE ZZTPP_ZSTZ_BODY4
SET
* GZ = 'Y'
ROWCOLOR = 'C410'
MBLNR = LW_P3_MATERIALDOCUMENT
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND YLDM = LW_P3_BODY4-YLDM
AND YLPH = LW_P3_BODY4-YLPH
AND LGORT = LW_P3_BODY4-LGORT.
* ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
*******Change at + 20120613
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '0' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
IF GW_MESSAGE IS INITIAL.
CONCATENATE '凭证'LW_P3_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' '凭证'LW_P3_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ENDIF.
CALL FUNCTION 'DEQUEUE_ALL'
* EXPORTING
* _SYNCHRON = ' '
.
ELSE.
ROLLBACK WORK.
CLEAR : GW_MESSAGE-MESSAGE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
SORT LT_P3_RETURN BY TYPE ID NUMBER.
DELETE ADJACENT DUPLICATES FROM LT_P3_RETURN COMPARING TYPE ID NUMBER.
CLEAR LW_P3_RETURN.
LOOP AT LT_P3_RETURN INTO LW_P3_RETURN .
IF GW_MESSAGE IS INITIAL.
GW_MESSAGE-MESSAGE = LW_P3_RETURN-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' LW_P3_RETURN-MESSAGE
INTO GW_MESSAGE-MESSAGE .
ENDIF.
ENDLOOP.
MESSAGE GW_MESSAGE-MESSAGE TYPE 'I'.
EXIT.
ENDIF.
ENDIF.
*******************************无此订单项目***************************************************
CLEAR : LV_STATUS.
REFRESH LT_P3_RETURN.
CLEAR LW_P3_RETURN.
* CLEAR GW_MESSAGE.
CLEAR LW_P3_BODY4.
REFRESH LT_P3_GOODSMVT_ITEM.
CLEAR:LW_P3_GOODSMVT_HEADRET,
LW_P3_MATERIALDOCUMENT,
LW_P3_MATDOCUMENTYEAR,
LW_P3_GOODSMVT_ITEM.
LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
IF LW_P3_BODY4-YLDM+8 = '3010300000' OR
LW_P3_BODY4-YLDM+8 = '3010400000' OR
LW_P3_BODY4-YLDM+8 = '3100300000' OR
LW_P3_BODY4-YLDM+8 = '3100100000' OR
LW_P3_BODY4-YLDM+8 = '3100900000' .
CONTINUE.
ENDIF.
SEARCH LW_P3_BODY4-YLMS FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤 ,MB1C
IF SY-SUBRC = 0.
CLEAR LW_P3_BODY3.
LOOP AT GT_BODY3 INTO LW_P3_BODY3.
*订单项目编号 :在订单组件中不存在,MB1C 531收货
SELECT SINGLE POSNR INTO LW_P3_POSNR
FROM AFPO
WHERE AUFNR = LW_P3_BODY3-CPDDH
AND MATNR = LW_P3_BODY4-YLDM.
IF SY-SUBRC <> 0.
LW_P3_GOODSMVT_ITEM-PLANT = '1201'."工厂
LW_P3_GOODSMVT_ITEM-STGE_LOC = LW_P3_BODY4-LGORT."库存地点
LW_P3_GOODSMVT_ITEM-MOVE_TYPE = '531'."移动类型
LW_P3_GOODSMVT_ITEM-MATERIAL = LW_P3_BODY4-YLDM."代码
* LW_P3_YLZL = LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
* LW_P3_GOODSMVT_ITEM-ENTRY_QNT = LW_P3_YLZL."数量
LW_P3_GOODSMVT_ITEM-ENTRY_QNT =
LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
LW_P3_GOODSMVT_ITEM-ENTRY_UOM = 'KG'."单位
LW_P3_GOODSMVT_ITEM-ORDERID = LW_P3_BODY3-CPDDH."订单号
LW_P3_GOODSMVT_ITEM-BATCH = LW_P3_BODY4-YLPH."批号
APPEND LW_P3_GOODSMVT_ITEM TO LT_P3_GOODSMVT_ITEM.
LV_STATUS = 'X'.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
IF LT_P3_GOODSMVT_ITEM IS NOT INITIAL.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = LW_P3_GOODSMVT_HEADER
GOODSMVT_CODE = '05'
IMPORTING
GOODSMVT_HEADRET = LW_P3_GOODSMVT_HEADRET
MATERIALDOCUMENT = LW_P3_MATERIALDOCUMENT
MATDOCUMENTYEAR = LW_P3_MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = LT_P3_GOODSMVT_ITEM
RETURN = LT_P3_RETURN.
IF LW_P3_MATERIALDOCUMENT IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
SEARCH LW_P3_BODY4-YLMS FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤
IF SY-SUBRC = 0.
* SELECT SINGLE POSNR INTO LW_P3_POSNR
* FROM AFPO
* WHERE AUFNR = LW_P3_BODY3-CPDDH
* AND MATNR = LW_P3_BODY4-YLDM.
* IF SY-SUBRC <> 0.
UPDATE ZZTPP_ZSTZ_BODY4
SET
GZ = 'Y'
ROWCOLOR = 'C410'
MBLNR = LW_P3_MATERIALDOCUMENT
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND YLDM = LW_P3_BODY4-YLDM
AND YLPH = LW_P3_BODY4-YLPH
AND LGORT = LW_P3_BODY4-LGORT.
* ENDIF.
ENDIF.
ENDLOOP.
*******Change at + 20120613
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '0' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
IF GW_MESSAGE IS INITIAL.
CONCATENATE '凭证'LW_P3_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' '凭证'LW_P3_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ENDIF.
CALL FUNCTION 'DEQUEUE_ALL'
* EXPORTING
* _SYNCHRON = ' '
.
ELSE.
CLEAR : GW_MESSAGE-MESSAGE.
ROLLBACK WORK.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
SORT LT_P3_RETURN BY TYPE ID NUMBER.
DELETE ADJACENT DUPLICATES FROM LT_P3_RETURN COMPARING TYPE ID NUMBER.
CLEAR LW_P3_RETURN.
LOOP AT LT_P3_RETURN INTO LW_P3_RETURN .
IF GW_MESSAGE IS INITIAL.
GW_MESSAGE-MESSAGE = LW_P3_RETURN-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' LW_P3_RETURN-MESSAGE
INTO GW_MESSAGE-MESSAGE .
ENDIF.
ENDLOOP.
MESSAGE GW_MESSAGE-MESSAGE TYPE 'I'.
EXIT.
ENDIF.
ENDIF.
*************************************玻纤*********************************************
* CLEAR : LV_STATUS.
* REFRESH LT_P3_RETURN.
* CLEAR LW_P3_RETURN.
* CLEAR GW_MESSAGE.
* CLEAR LW_P3_BODY4.
* REFRESH LT_P3_GOODSMVT_ITEM.
*
* CLEAR:LW_P3_GOODSMVT_HEADRET,
* LW_P3_MATERIALDOCUMENT,
* LW_P3_MATDOCUMENTYEAR,
* LW_P3_GOODSMVT_ITEM.
*
* LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
* IF LW_P3_BODY4-YLDM+8 = '3010300000' OR
* LW_P3_BODY4-YLDM+8 = '3010400000' OR
* LW_P3_BODY4-YLDM+8 = '3100300000' OR
* LW_P3_BODY4-YLDM+8 = '3100100000' OR
* LW_P3_BODY4-YLDM+8 = '3100900000' .
* CONTINUE.
* ENDIF.
* SEARCH LW_P3_BODY4-YLMS FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤 ,MB1C
* IF SY-SUBRC = 0.
* CLEAR LW_P3_BODY3.
* LOOP AT GT_BODY3 INTO LW_P3_BODY3.
**订单项目编号 :在订单组件中不存在,MB1C 531收货
** SELECT SINGLE POSNR INTO LW_P3_POSNR
** FROM AFPO
** WHERE AUFNR = LW_P3_BODY3-CPDDH
** AND MATNR = LW_P3_BODY4-YLDM.
** IF SY-SUBRC <> 0.
* LW_P3_GOODSMVT_ITEM-PLANT = '1201'."工厂
* LW_P3_GOODSMVT_ITEM-STGE_LOC = LW_P3_BODY4-LGORT."库存地点
* LW_P3_GOODSMVT_ITEM-MOVE_TYPE = '531'."移动类型
* LW_P3_GOODSMVT_ITEM-MATERIAL = LW_P3_BODY4-YLDM."代码
** LW_P3_YLZL = LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
** LW_P3_GOODSMVT_ITEM-ENTRY_QNT = LW_P3_YLZL."数量
* LW_P3_GOODSMVT_ITEM-ENTRY_QNT =
* LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
* LW_P3_GOODSMVT_ITEM-ENTRY_UOM = 'KG'."单位
* LW_P3_GOODSMVT_ITEM-ORDERID = LW_P3_BODY3-CPDDH."订单号
* LW_P3_GOODSMVT_ITEM-BATCH = LW_P3_BODY4-YLPH."批号
* APPEND LW_P3_GOODSMVT_ITEM TO LT_P3_GOODSMVT_ITEM.
** LV_STATUS = 'X'.
** ENDIF.
* ENDLOOP.
* ENDIF.
* ENDLOOP.
*
* IF LT_P3_GOODSMVT_ITEM IS NOT INITIAL.
* CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
* EXPORTING
* GOODSMVT_HEADER = LW_P3_GOODSMVT_HEADER
* GOODSMVT_CODE = '05' " MB1C - Enter Other Goods Receipt
* IMPORTING
* GOODSMVT_HEADRET = LW_P3_GOODSMVT_HEADRET
* MATERIALDOCUMENT = LW_P3_MATERIALDOCUMENT
* MATDOCUMENTYEAR = LW_P3_MATDOCUMENTYEAR
* TABLES
* GOODSMVT_ITEM = LT_P3_GOODSMVT_ITEM
* RETURN = LT_P3_RETURN.
*
* IF LW_P3_MATERIALDOCUMENT IS NOT INITIAL.
* CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
* LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
* SEARCH LW_P3_BODY4-YLMS FOR LR_STR1 . "物料描述中含有‘混凝土’为波纤
* IF SY-SUBRC = 0.
** SELECT SINGLE POSNR INTO LW_P3_POSNR
** FROM AFPO
** WHERE AUFNR = LW_P3_BODY3-CPDDH
** AND MATNR = LW_P3_BODY4-YLDM.
** IF SY-SUBRC <> 0.
* UPDATE ZZTPP_ZSTZ_BODY4
* SET
* GZ = 'Y'
* ROWCOLOR = 'C410'
* MBLNR = LW_P3_MATERIALDOCUMENT
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
* AND YLDM = LW_P3_BODY4-YLDM
* AND YLPH = LW_P3_BODY4-YLPH
* AND LGORT = LW_P3_BODY4-LGORT.
** ENDIF.
* ENDIF.
* ENDLOOP.
********Change at + 20120613
** LOOP AT SCREEN.
** IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
** SCREEN-INPUT = '0' .
** MODIFY SCREEN.
** ENDIF.
** ENDLOOP.
* IF GW_MESSAGE IS INITIAL.
* CONCATENATE '凭证'LW_P3_MATERIALDOCUMENT '过账成功'
* INTO GW_MESSAGE-MESSAGE.
* ELSE.
* CONCATENATE GW_MESSAGE-MESSAGE ';' '凭证'LW_P3_MATERIALDOCUMENT '过账成功'
* INTO GW_MESSAGE-MESSAGE.
* ENDIF.
** CALL FUNCTION 'DEQUEUE_ALL'
*** EXPORTING
*** _SYNCHRON = ' '
** .
* ELSE.
* CLEAR : GW_MESSAGE-MESSAGE.
* ROLLBACK WORK.
* CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
* SORT LT_P3_RETURN BY TYPE ID NUMBER.
* DELETE ADJACENT DUPLICATES FROM LT_P3_RETURN COMPARING TYPE ID NUMBER.
* CLEAR LW_P3_RETURN.
* LOOP AT LT_P3_RETURN INTO LW_P3_RETURN .
* IF GW_MESSAGE IS INITIAL.
* GW_MESSAGE-MESSAGE = LW_P3_RETURN-MESSAGE.
* ELSE.
* CONCATENATE GW_MESSAGE-MESSAGE ';' LW_P3_RETURN-MESSAGE
* INTO GW_MESSAGE-MESSAGE .
* ENDIF.
* ENDLOOP.
* MESSAGE GW_MESSAGE-MESSAGE TYPE 'I'.
* EXIT.
* ENDIF.
* ENDIF.
*******************************余料***************************************************
REFRESH LT_P3_GOODSMVT_ITEM.
REFRESH LT_P3_RETURN.
CLEAR LW_P3_RETURN.
CLEAR:LW_P3_GOODSMVT_HEADRET,
LW_P3_MATERIALDOCUMENT,
LW_P3_MATDOCUMENTYEAR,
LW_P3_GOODSMVT_ITEM.
LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
* IF ZZTPP_ZSTZ_HEAD-BTBHA+0(1) = 'H' AND ( LW_P3_BODY4-YLDM+8 = '3010300000' OR
* LW_P3_BODY4-YLDM+8 = '3010400000' OR
* LW_P3_BODY4-YLDM+8 = '3100300000' OR
* LW_P3_BODY4-YLDM+8 = '3100100000' OR
* LW_P3_BODY4-YLDM+8 = '3100900000' ).
* CONTINUE.
* ENDIF.
IF LW_P3_BODY4-YLDM+8 = '3010300000' OR
LW_P3_BODY4-YLDM+8 = '3010400000' OR
LW_P3_BODY4-YLDM+8 = '3100300000' OR
LW_P3_BODY4-YLDM+8 = '3100100000' OR
LW_P3_BODY4-YLDM+8 = '3100900000' .
CONTINUE.
ENDIF.
*判断过账的是不是余料或者尾料,此处代码相同。
SEARCH LW_P3_BODY4-YLMS FOR LR_STR2 . "物料描述中含有‘余料’为废线,mb1a移动类型为531
IF SY-SUBRC = 0.
CLEAR LW_P3_BODY3.
LOOP AT GT_BODY3 INTO LW_P3_BODY3.
IF LW_P3_BODY3-YLCCHJ = 0 OR LW_P3_BODY3-YLCCHJ IS INITIAL.
CONTINUE.
ENDIF.
LW_P3_GOODSMVT_ITEM-PLANT = '1201'."工厂
LW_P3_GOODSMVT_ITEM-STGE_LOC = LW_P3_BODY4-LGORT."库存地点
LW_P3_GOODSMVT_ITEM-MOVE_TYPE = '531'."移动类型
* LW_P3_YLZL = LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
* LW_P3_GOODSMVT_ITEM-ENTRY_QNT = LW_P3_YLZL ."数量
LW_P3_GOODSMVT_ITEM-ENTRY_QNT =
LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
LW_P3_GOODSMVT_ITEM-ENTRY_UOM = 'KG'."单位
LW_P3_GOODSMVT_ITEM-ORDERID = LW_P3_BODY3-CPDDH."订单号
LW_P3_GOODSMVT_ITEM-MATERIAL = LW_P3_BODY4-YLDM."代码
LW_P3_GOODSMVT_ITEM-BATCH = LW_P3_BODY4-YLPH."批号
SELECT SINGLE RSNUM RSPOS " 预留编号,预留项目编号
INTO (LW_P3_GOODSMVT_ITEM-RESERV_NO,LW_P3_GOODSMVT_ITEM-RES_ITEM)
FROM RESB
WHERE AUFNR = LW_P3_BODY3-CPDDH
AND MATNR = LW_P3_BODY4-YLDM.
"modify by maojian at 2012-10-25
IF SY-SUBRC <> 0.
CLEAR : LW_P3_GOODSMVT_ITEM-RESERV_NO,
LW_P3_GOODSMVT_ITEM-RES_ITEM.
ENDIF.
APPEND LW_P3_GOODSMVT_ITEM TO LT_P3_GOODSMVT_ITEM.
ENDLOOP.
ELSE.
SEARCH LW_P3_BODY4-YLMS FOR LR_STR3 . "物料描述中含有‘尾料’为废线,mb1a移动类型为531
IF SY-SUBRC = 0.
CLEAR LW_P3_BODY3.
LOOP AT GT_BODY3 INTO LW_P3_BODY3.
IF LW_P3_BODY3-YLCCHJ = 0 OR LW_P3_BODY3-YLCCHJ IS INITIAL.
CONTINUE.
ENDIF.
LW_P3_GOODSMVT_ITEM-PLANT = '1201'."工厂
LW_P3_GOODSMVT_ITEM-STGE_LOC = LW_P3_BODY4-LGORT."库存地点
LW_P3_GOODSMVT_ITEM-MOVE_TYPE = '531'."移动类型
* LW_P3_YLZL = LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
* LW_P3_GOODSMVT_ITEM-ENTRY_QNT = LW_P3_YLZL ."数量
LW_P3_GOODSMVT_ITEM-ENTRY_QNT =
LW_P3_BODY4-YLZL * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
LW_P3_GOODSMVT_ITEM-ENTRY_UOM = 'KG'."单位
LW_P3_GOODSMVT_ITEM-ORDERID = LW_P3_BODY3-CPDDH."订单号
LW_P3_GOODSMVT_ITEM-MATERIAL = LW_P3_BODY4-YLDM."代码
LW_P3_GOODSMVT_ITEM-BATCH = LW_P3_BODY4-YLPH."批号
SELECT SINGLE RSNUM RSPOS " 预留编号,预留项目编号
INTO (LW_P3_GOODSMVT_ITEM-RESERV_NO,LW_P3_GOODSMVT_ITEM-RES_ITEM)
FROM RESB
WHERE AUFNR = LW_P3_BODY3-CPDDH
AND MATNR = LW_P3_BODY4-YLDM.
"modify by maojian at 2012-10-25
IF SY-SUBRC <> 0.
CLEAR : LW_P3_GOODSMVT_ITEM-RESERV_NO,
LW_P3_GOODSMVT_ITEM-RES_ITEM.
ENDIF.
APPEND LW_P3_GOODSMVT_ITEM TO LT_P3_GOODSMVT_ITEM.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
IF LT_P3_GOODSMVT_ITEM IS NOT INITIAL.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = LW_P3_GOODSMVT_HEADER
GOODSMVT_CODE = '05'
IMPORTING
GOODSMVT_HEADRET = LW_P3_GOODSMVT_HEADRET
MATERIALDOCUMENT = LW_P3_MATERIALDOCUMENT
MATDOCUMENTYEAR = LW_P3_MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = LT_P3_GOODSMVT_ITEM
RETURN = LT_P3_RETURN.
IF LW_P3_MATERIALDOCUMENT IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LOOP AT GT_BODY4 INTO LW_P3_BODY4 WHERE GZ <> 'Y' .
SEARCH LW_P3_BODY4-YLMS FOR LR_STR2 . "物料描述中含有‘余料’为废线,mb1a移动类型为531
IF SY-SUBRC = 0.
UPDATE ZZTPP_ZSTZ_BODY4
SET GZ = 'Y'
ROWCOLOR = 'C410'
MBLNR = LW_P3_MATERIALDOCUMENT
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND YLDM = LW_P3_BODY4-YLDM
AND YLPH = LW_P3_BODY4-YLPH
AND LGORT = LW_P3_BODY4-LGORT.
ELSE.
SEARCH LW_P3_BODY4-YLMS FOR LR_STR3 . "物料描述中含有‘尾料’为废线,mb1a移动类型为531
IF SY-SUBRC = 0.
UPDATE ZZTPP_ZSTZ_BODY4
SET GZ = 'Y'
ROWCOLOR = 'C410'
MBLNR = LW_P3_MATERIALDOCUMENT
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND YLDM = LW_P3_BODY4-YLDM
AND YLPH = LW_P3_BODY4-YLPH
AND LGORT = LW_P3_BODY4-LGORT.
ENDIF.
ENDIF.
ENDLOOP.
*******Change at + 20120613
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '0' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
IF GW_MESSAGE IS INITIAL.
CONCATENATE '凭证'LW_P3_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' '凭证'LW_P3_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ENDIF.
ELSE.
ROLLBACK WORK.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
SORT LT_P3_RETURN BY TYPE ID NUMBER.
DELETE ADJACENT DUPLICATES FROM LT_P3_RETURN COMPARING TYPE ID NUMBER.
CLEAR LW_P3_RETURN.
LOOP AT LT_P3_RETURN INTO LW_P3_RETURN .
IF GW_MESSAGE IS INITIAL.
GW_MESSAGE-MESSAGE = LW_P3_RETURN-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' LW_P3_RETURN-MESSAGE
INTO GW_MESSAGE-MESSAGE .
ENDIF.
ENDLOOP.
MESSAGE GW_MESSAGE-MESSAGE TYPE 'I'.
EXIT.
ENDIF.
ENDIF.
"余料分摊
CLEAR LW_P3_BODY3.
CLEAR GW_BODY4_SUM.
LOOP AT GT_BODY4 INTO LW_P3_BODY4.
GW_BODY4_SUM = GW_BODY4_SUM + LW_P3_BODY4-YLZL.
ENDLOOP.
LOOP AT GT_BODY3 INTO LW_P3_BODY3.
LW_P3_BODY3-BXFX = GW_BODY4_SUM * ( LW_P3_BODY3-YLCCHJ / GW_BODY3_SUM ).
UPDATE ZZTPP_ZSTZ_BODY3
SET BXFX = LW_P3_BODY3-BXFX
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND MATNR = LW_P3_BODY3-MATNR
AND CPDDH = LW_P3_BODY3-CPDDH
AND LGORT = LW_P3_BODY3-LGORT.
ENDLOOP.
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
COMMIT WORK.
** Fill the dynamic table <fs_dyn_tab3>
* SELECT MATNR MAKTX CPDDH LGORT HGPZL BHGPZL DJYPZL
* CPCCHEJ FGP YLCCHJ CPCL YLFT BXFX JQFT RGFT YDFT
* FROM ZZTPP_ZSTZ_BODY3 INTO TABLE <FS_DYN_TAB3>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
** Fill the dynamic table <fs_dyn_tab4>
* SELECT YLDM YLMS YLPH LGORT YLZL
* FROM ZZTPP_ZSTZ_BODY4 INTO TABLE <FS_DYN_TAB4>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* 动态显示当前记录
PERFORM FILL_DYNAMIC_TABLE.
* SORT LT_P3_RETURN BY TYPE ID NUMBER.
* DELETE ADJACENT DUPLICATES FROM LT_P3_RETURN COMPARING TYPE ID NUMBER.
* LOOP AT LT_P3_RETURN INTO LW_P3_RETURN .
* CONCATENATE GW_MESSAGE LW_P3_RETURN-MESSAGE
* INTO GW_MESSAGE SEPARATED BY ';' .
* ENDLOOP.
IF GW_MESSAGE IS INITIAL.
MESSAGE '没有需要过账的记录!' TYPE 'I'.
ELSE.
MESSAGE GW_MESSAGE-MESSAGE TYPE 'S'.
ENDIF.
CALL METHOD OBJ_MY_ALV_GRID3->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID4->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDFORM. " POST3_DATA
*&---------------------------------------------------------------------*
*& Form POST4_DATA
*&---------------------------------------------------------------------*
* 包装物过账
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM POST4_DATA .
* TYPES:BEGIN OF ty_cc_aufnr,
* matnr TYPE zcpdm,
* lgort TYPE lgort_d,
* aufnr TYPE aufnr,
* cpcl TYPE zcpcl,
* END OF ty_cc_aufnr.
* TYPES:BEGIN OF ty_cc_mblnr,
* mblnr TYPE mblnr,
* END OF ty_cc_mblnr.
* DATA: lw_cc_mblnr TYPE ty_cc_mblnr,
* lt_cc_mblnr TYPE TABLE OF ty_cc_mblnr.
*
* DATA: lw_cc_aufnr TYPE ty_cc_aufnr,
* lt_cc_aufnr TYPE TABLE OF ty_cc_aufnr.
* DATA: lw_mkpf TYPE gy_mkpf,
* lw_mseg TYPE gy_mseg.
DATA: LW_CC_BODY5 TYPE ZZTPP_ZSTZ_BODY5,
LT_CC_BODY5 TYPE TABLE OF ZZTPP_ZSTZ_BODY5.
DATA: LW_P1_BODY5 TYPE ZZTPP_ZSTZ_BODY5,
LW_P1_BODY3 TYPE ZZTPP_ZSTZ_BODY3,
LW_BZW TYPE ZBZWSL.
* DATA: lw_cc_budat(010).
* DATA: lw_cc_cl(018).
* DATA: lw_cc_btbha(025).
DATA:LW_GOODSMVT_HEADER TYPE BAPI2017_GM_HEAD_01,
LW_GOODSMVT_CODE TYPE BAPI2017_GM_CODE,
LW_GOODSMVT_HEADRET TYPE BAPI2017_GM_HEAD_RET,
LW_MATERIALDOCUMENT TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
LW_MATDOCUMENTYEAR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR,
LT_GOODSMVT_ITEM TYPE STANDARD TABLE OF BAPI2017_GM_ITEM_CREATE,
LW_GOODSMVT_ITEM TYPE BAPI2017_GM_ITEM_CREATE,
LT_RETURN TYPE STANDARD TABLE OF BAPIRET2,
LW_RETURN TYPE BAPIRET2.
GV_TITLE = '过账确认'.
GV_TXT_QA = '是否过账'.
IF ZZTPP_ZSTZ_HEAD-GZ <> 'Y'.
MESSAGE S001(00) WITH '工时未过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
REFRESH GT_BODY2.
SELECT * INTO TABLE GT_BODY2
FROM ZZTPP_ZSTZ_BODY2
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND GZ = ''.
IF SY-SUBRC = 0.
MESSAGE S001(00) WITH '返工品未过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
REFRESH GT_BODY4.
SELECT * INTO TABLE GT_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND GZ = ''.
IF SY-SUBRC = 0.
MESSAGE S001(00) WITH '余料未过帐!' DISPLAY LIKE 'E'.
EXIT.
* ELSE.
* REFRESH GT_BODY5.
* SELECT * INTO TABLE GT_BODY5
* FROM ZZTPP_ZSTZ_BODY5
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
* AND GZ = ''.
* IF SY-SUBRC <> 0 OR GT_BODY5 IS INITIAL.
* MESSAGE S001(00) WITH '包装物已过账!' DISPLAY LIKE 'E'.
* EXIT.
* ENDIF.
ENDIF.
ENDIF.
ENDIF.
* 确认是否过账数据
PERFORM COFIRM_ACTION USING GV_TITLE
GV_TXT_QA
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
"过账日期写入head不能修改
*******Change at + 20120613
* UPDATE ZZTPP_ZSTZ_HEAD
* SET BUDAT = ZZTPP_ZSTZ_HEAD-BUDAT
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '1' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
* REFRESH: lt_cc_aufnr,lt_cc_mblnr.
* SELECT matnr
* lgort
* cpddh AS aufnr
* cpcl
* INTO TABLE lt_cc_aufnr
* FROM zztpp_zstz_body3
* WHERE btbha = zztpp_zstz_head-btbha.
" WRITE zztpp_zstz_head-budat to lw_cc_budat MM/DD/YYYY.
" REPLACE '/' in lw_cc_budat WITH '.'.
* lw_cc_budat = zztpp_zstz_head-budat.
REFRESH GT_BODY5.
SELECT * INTO TABLE GT_BODY5
FROM ZZTPP_ZSTZ_BODY5
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* REFRESH GT_BODY3.
* SELECT * INTO TABLE GT_BODY3
* FROM ZZTPP_ZSTZ_BODY3
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
* CLEAR: LW_P1_BODY3,GW_BODY3_SUM.
* LOOP AT GT_BODY3 INTO LW_P1_BODY3.
* GW_BODY3_SUM = GW_BODY3_SUM + LW_P1_BODY3-YLCCHJ.
* ENDLOOP.
"bapi抬头参数
CLEAR LW_GOODSMVT_HEADER.
LW_GOODSMVT_HEADER-PSTNG_DATE = ZZTPP_ZSTZ_HEAD-BUDAT.
LW_GOODSMVT_HEADER-DOC_DATE = ZZTPP_ZSTZ_HEAD-BUDAT.
LW_GOODSMVT_HEADER-PR_UNAME = SY-UNAME.
LW_GOODSMVT_HEADER-HEADER_TXT = ZZTPP_ZSTZ_HEAD-BTBHA."台班编号
CLEAR:LW_GOODSMVT_HEADRET,
LW_MATERIALDOCUMENT,
LW_MATDOCUMENTYEAR.
REFRESH : LT_GOODSMVT_ITEM,
LT_RETURN,
GT_MESSAGE.
LOOP AT GT_BODY5 INTO LW_P1_BODY5 WHERE GZ <> 'Y'.
CLEAR : LW_GOODSMVT_ITEM.
* CLEAR LW_P1_BODY3.
* LOOP AT GT_BODY3 INTO LW_P1_BODY3.
LW_GOODSMVT_ITEM-MATERIAL = LW_P1_BODY5-BZWLH. "物料代码
LW_GOODSMVT_ITEM-BATCH = LW_P1_BODY5-BZWPH. "批号
LW_GOODSMVT_ITEM-PLANT = '1201'. "工厂
LW_GOODSMVT_ITEM-STGE_LOC = LW_P1_BODY5-LGORT. "库存地点
LW_GOODSMVT_ITEM-MOVE_TYPE = '261'. "移动类型
LW_GOODSMVT_ITEM-ENTRY_QNT = LW_P1_BODY5-BZWSL. "数量
*包装物分摊
* LW_BZW = LW_P1_BODY5-BZWSL * ( LW_P1_BODY3-YLCCHJ / GW_BODY3_SUM ).
* LW_GOODSMVT_ITEM-ENTRY_QNT = LW_BZW.
LW_GOODSMVT_ITEM-ORDERID = LW_P1_BODY5-SCDDH. "订单号
"扣除预留 MB23 - 在CO02中去掉反冲的钩
SELECT SINGLE RSNUM RSPOS "预留编号,预留项目编号
INTO (LW_GOODSMVT_ITEM-RESERV_NO,LW_GOODSMVT_ITEM-RES_ITEM)
FROM RESB
WHERE AUFNR = LW_P1_BODY5-SCDDH
AND MATNR = LW_P1_BODY5-BZWLH.
IF SY-SUBRC <> 0.
CLEAR : LW_GOODSMVT_ITEM-RESERV_NO,
LW_GOODSMVT_ITEM-RES_ITEM.
ENDIF.
*单位
SELECT SINGLE MEINS
INTO LW_GOODSMVT_ITEM-ENTRY_UOM
FROM RESB
WHERE AUFNR = LW_P1_BODY5-SCDDH
AND MATNR = LW_P1_BODY5-BZWLH.
LW_GOODSMVT_ITEM-MVT_IND = ''. "移动标识
APPEND LW_GOODSMVT_ITEM TO LT_GOODSMVT_ITEM.
* ENDLOOP.
ENDLOOP.
IF LT_GOODSMVT_ITEM IS NOT INITIAL.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = LW_GOODSMVT_HEADER
GOODSMVT_CODE = '03' "MB1A
IMPORTING
GOODSMVT_HEADRET = LW_GOODSMVT_HEADRET
MATERIALDOCUMENT = LW_MATERIALDOCUMENT
MATDOCUMENTYEAR = LW_MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = LT_GOODSMVT_ITEM
RETURN = LT_RETURN.
IF LW_MATERIALDOCUMENT IS NOT INITIAL.
* APPEND lw_materialdocument TO lt_cc_mblnr.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LOOP AT GT_BODY5 INTO LW_P1_BODY5 WHERE GZ <> 'Y'.
UPDATE ZZTPP_ZSTZ_BODY5
SET GZ = 'Y'
ROWCOLOR = 'C410'
MBLNR = LW_MATERIALDOCUMENT
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND SCDDH = LW_P1_BODY5-SCDDH
AND BZWLH = LW_P1_BODY5-BZWLH
AND BZWPH = LW_P1_BODY5-BZWPH
AND LGORT = LW_P1_BODY5-LGORT.
ENDLOOP.
*******Change at + 20120613
* LOOP AT SCREEN.
* IF SCREEN-NAME = 'ZZTPP_ZSTZ_HEAD-BUDAT' .
* SCREEN-INPUT = '0' .
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
* MESSAGE s001(00) WITH '凭证'lw_materialdocument '过账成功!'.
IF GW_MESSAGE IS INITIAL.
CONCATENATE '凭证'LW_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' '凭证'LW_MATERIALDOCUMENT '过账成功'
INTO GW_MESSAGE-MESSAGE.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
* LOOP AT lt_return INTO lw_return .
* IF lw_return-type = 'E'.
* MESSAGE lw_return-message TYPE 'I'.
* ENDIF.
* ENDLOOP.
SORT LT_RETURN BY TYPE ID NUMBER.
DELETE ADJACENT DUPLICATES FROM LT_RETURN COMPARING TYPE ID NUMBER.
CLEAR LW_RETURN.
CLEAR GW_MESSAGE.
LOOP AT LT_RETURN INTO LW_RETURN .
IF GW_MESSAGE IS INITIAL.
GW_MESSAGE-MESSAGE = LW_RETURN-MESSAGE.
ELSE.
CONCATENATE GW_MESSAGE-MESSAGE ';' LW_RETURN-MESSAGE
INTO GW_MESSAGE-MESSAGE .
ENDIF.
ENDLOOP.
MESSAGE GW_MESSAGE-MESSAGE TYPE 'I'.
EXIT.
ENDIF.
ENDIF.
* REFRESH: gt_mkpf,
* gt_mseg.
* REFRESH: gt_body5.
* SELECT mblnr
* mjahr
* bktxt
* FROM mkpf
* INTO TABLE gt_mkpf
* WHERE bktxt = zztpp_zstz_head-btbha. "台班编号
* IF gt_mkpf IS NOT INITIAL.
* SORT gt_mkpf BY mblnr mjahr.
* SELECT mseg~mblnr
* mseg~mjahr
* mseg~bwart
* mseg~matnr
* mseg~charg "批号
* mseg~lgort "存储位置
* mseg~menge "数量
* mseg~aufnr "产品订单号
* FROM mseg
* INTO TABLE gt_mseg
* FOR ALL ENTRIES IN gt_mkpf
* WHERE mseg~mblnr = gt_mkpf-mblnr
* AND mseg~mjahr = gt_mkpf-mjahr.
* ELSE.
* MESSAGE s001(00) WITH '数据不存在!' DISPLAY LIKE 'E'.
* ENDIF.
* IF gt_mkpf IS NOT INITIAL.
* LOOP AT gt_mseg INTO lw_mseg.
* CLEAR: gw_maktx.
* SELECT SINGLE maktx
* INTO gw_maktx
* FROM makt
* WHERE matnr = lw_mseg-matnr.
* IF lw_mseg-matnr+8(1) = '5'. "包装物
* lw_cc_body5-btbha = zztpp_zstz_head-btbha.
* lw_cc_body5-scddh = lw_mseg-aufnr.
* lw_cc_body5-bzwlh = lw_mseg-matnr.
* lw_cc_body5-maktx = gw_maktx.
* lw_cc_body5-bzwph = lw_mseg-charg.
* lw_cc_body5-bzwsl = lw_mseg-menge.
* lw_cc_body5-mblnr = lw_mseg-mblnr.
* lw_cc_body5-lgort = lw_mseg-lgort.
* lw_cc_body5-gz = 'Y'.
* lw_cc_body5-rowcolor = 'C410'.
* MODIFY zztpp_zstz_body5 FROM lw_cc_body5 .
* ENDIF.
* CLEAR lw_mseg.
* ENDLOOP.
* ENDIF.
COMMIT WORK.
** Fill the dynamic table <fs_dyn_tab5>
SELECT BZWLH MAKTX BZWPH LGORT BZWSL SCDDH MBLNR ROWCOLOR
FROM ZZTPP_ZSTZ_BODY5 INTO TABLE <FS_DYN_TAB5>
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
*display message
MESSAGE GW_MESSAGE-MESSAGE TYPE 'S'.
CALL METHOD OBJ_MY_ALV_GRID5->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDFORM. " POST4_DATA
*&---------------------------------------------------------------------*
*& Form COFIRM_ACTION
*&---------------------------------------------------------------------*
* 确认动作
*----------------------------------------------------------------------*
* -->P_TITLE text
* -->P_TXT_QA text
* -->P_TXT_BN1 text
* -->P_GV_TXT_BN2 text
*----------------------------------------------------------------------*
FORM COFIRM_ACTION USING P_TITLE TYPE C
P_TXT_QA TYPE C
P_TXT_BN1 TYPE C
P_TXT_BN2 TYPE C
CHANGING P_ANSWER TYPE C.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = P_TITLE
TEXT_QUESTION = P_TXT_QA
TEXT_BUTTON_1 = P_TXT_BN1
TEXT_BUTTON_2 = P_TXT_BN2
DISPLAY_CANCEL_BUTTON = ''
START_COLUMN = '65'
IMPORTING
ANSWER = P_ANSWER
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
P_ANSWER = '2'. "否
ENDIF.
ENDFORM. " COFIRM_ACTION
*&---------------------------------------------------------------------*
*& Form head_translate_to_upper_case
*&---------------------------------------------------------------------*
* head输入参数转换为大写
*----------------------------------------------------------------------*
FORM HEAD_TRANSLATE_TO_UPPER_CASE.
TRANSLATE ZZTPP_ZSTZ_HEAD-BTBHA TO UPPER CASE.
TRANSLATE ZZTPP_ZSTZ_HEAD-JZHAO TO UPPER CASE.
TRANSLATE ZZTPP_ZSTZ_HEAD-BB1YB TO UPPER CASE .
TRANSLATE ZZTPP_ZSTZ_HEAD-ZBBZ TO UPPER CASE .
TRANSLATE ZZTPP_ZSTZ_HEAD-ZJY TO UPPER CASE .
TRANSLATE ZZTPP_ZSTZ_HEAD-SCZG TO UPPER CASE .
ENDFORM. "head_translate_to_upper_case
*&---------------------------------------------------------------------*
*& Form body1_translate_to_upper_case
*&---------------------------------------------------------------------*
* body1输入参数转换为大写
*----------------------------------------------------------------------*
FORM BODY1_TRANSLATE_TO_UPPER_CASE.
TRANSLATE ZZTPP_ZSTZ_BODY1-YLDM TO UPPER CASE.
TRANSLATE ZZTPP_ZSTZ_BODY1-YLPH TO UPPER CASE.
TRANSLATE ZZTPP_ZSTZ_BODY1-LGORT TO UPPER CASE.
ENDFORM. "body1_translate_to_upper_case
*&---------------------------------------------------------------------*
*& Form body2_translate_to_upper_case
*&---------------------------------------------------------------------*
* body2输入参数转换为大写
*----------------------------------------------------------------------*
FORM BODY2_TRANSLATE_TO_UPPER_CASE.
TRANSLATE ZZTPP_ZSTZ_BODY2-FGPDM TO UPPER CASE.
TRANSLATE ZZTPP_ZSTZ_BODY2-FGOPH TO UPPER CASE.
TRANSLATE ZZTPP_ZSTZ_BODY2-FGDDH TO UPPER CASE.
TRANSLATE ZZTPP_ZSTZ_BODY2-LGORT TO UPPER CASE.
ENDFORM. "body2_translate_to_upper_case
*&---------------------------------------------------------------------*
*& Form body4_translate_to_upper_case
*&---------------------------------------------------------------------*
* body4输入参数转换为大写
*----------------------------------------------------------------------*
FORM BODY4_TRANSLATE_TO_UPPER_CASE.
TRANSLATE ZZTPP_ZSTZ_BODY4-YLDM TO UPPER CASE.
TRANSLATE ZZTPP_ZSTZ_BODY4-YLPH TO UPPER CASE.
TRANSLATE ZZTPP_ZSTZ_BODY4-LGORT TO UPPER CASE.
ENDFORM. "body4_translate_to_upper_case
*&---------------------------------------------------------------------*
*& Form BODY5_TRANSLATE_TO_UPPER_CASE
*&---------------------------------------------------------------------*
* body5输入参数转换成大写
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BODY5_TRANSLATE_TO_UPPER_CASE .
TRANSLATE ZZTPP_ZSTZ_BODY5-SCDDH TO UPPER CASE.
TRANSLATE ZZTPP_ZSTZ_BODY5-BZWLH TO UPPER CASE.
TRANSLATE ZZTPP_ZSTZ_BODY5-BZWPH TO UPPER CASE.
TRANSLATE ZZTPP_ZSTZ_BODY5-LGORT TO UPPER CASE.
ENDFORM. " BODY5_TRANSLATE_TO_UPPER_CASE
*&---------------------------------------------------------------------*
*& Form cl_sl_sl_data
*&---------------------------------------------------------------------*
* 当班成材率 当班回收率 当班损耗率 损耗总量 数据计算
*----------------------------------------------------------------------*
FORM CL_SL_SL_DATA .
DATA: LW_CSS_BODY1 TYPE ZZTPP_ZSTZ_BODY1,
LW_CSS_BODY2 TYPE ZZTPP_ZSTZ_BODY2,
LW_CSS_BODY3 TYPE ZZTPP_ZSTZ_BODY3,
LW_CSS_BODY4 TYPE ZZTPP_ZSTZ_BODY4.
DATA: LS_DBCCL(7),
LS_DBHSL(7),
LS_DBSHL(7),
LS_XHZL(10).
DATA: LW_CSS_DBCCL TYPE ZZLMS,
LW_CSS_DBHSL TYPE ZZLMS,
LW_CSS_DBSHL TYPE ZZLMS,
LW_CSS_XHZL TYPE CHAR10.
"原材料合计
REFRESH GT_BODY1.
SELECT * INTO TABLE GT_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR LW_CSS_BODY1.
CLEAR GW_BODY1_SUM.
LOOP AT GT_BODY1 INTO LW_CSS_BODY1.
GW_BODY1_SUM = GW_BODY1_SUM + LW_CSS_BODY1-ZL.
ENDLOOP.
"原料成品产出合计
CLEAR: LW_CSS_BODY3,GW_BODY3_SUM.
REFRESH GT_BODY3.
SELECT * INTO TABLE GT_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LOOP AT GT_BODY3 INTO LW_CSS_BODY3.
GW_BODY3_SUM = GW_BODY3_SUM + LW_CSS_BODY3-YLCCHJ.
ENDLOOP.
"余料合计
CLEAR: LW_CSS_BODY4,GW_BODY4_SUM.
REFRESH GT_BODY4.
SELECT * INTO TABLE GT_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LOOP AT GT_BODY4 INTO LW_CSS_BODY4.
GW_BODY4_SUM = GW_BODY4_SUM + LW_CSS_BODY4-YLZL.
ENDLOOP.
*纯返工品的情况,要根据返工品重量计算原料
IF GW_BODY1_SUM IS INITIAL.
CLEAR : GW_BODY1_SUM , GW_BODY3_SUM.
LOOP AT GT_BODY3 INTO LW_CSS_BODY3.
GW_BODY1_SUM = GW_BODY1_SUM + LW_CSS_BODY3-FGP.
GW_BODY3_SUM = GW_BODY3_SUM + LW_CSS_BODY3-CPCCHEJ.
ENDLOOP.
ENDIF.
IF GW_BODY1_SUM IS NOT INITIAL.
"当班成材率
LW_CSS_DBCCL = ( TRUNC( ( GW_BODY3_SUM / GW_BODY1_SUM ) * 10000 ) ) / 100.
IF LW_CSS_DBCCL < 0.
LS_DBCCL = ABS( LW_CSS_DBCCL ).
CONCATENATE '-' LS_DBCCL INTO LS_DBCCL.
CONDENSE LS_DBCCL NO-GAPS.
ZZTPP_ZSTZ_HEAD-DBCCL = LS_DBCCL.
ELSE.
ZZTPP_ZSTZ_HEAD-DBCCL = LW_CSS_DBCCL.
ENDIF.
"当班回收率
LW_CSS_DBHSL = ( TRUNC( ( GW_BODY4_SUM / GW_BODY1_SUM ) * 10000 ) ) / 100.
IF LW_CSS_DBHSL < 0.
LS_DBHSL = ABS( LW_CSS_DBHSL ).
CONCATENATE '-' LS_DBHSL INTO LS_DBHSL.
CONDENSE LS_DBHSL NO-GAPS.
ZZTPP_ZSTZ_HEAD-DBHSL = LS_DBHSL.
ELSE.
ZZTPP_ZSTZ_HEAD-DBHSL = LW_CSS_DBHSL.
ENDIF.
"当班损耗率
LW_CSS_DBSHL = ( TRUNC( ( ( GW_BODY1_SUM - GW_BODY3_SUM - GW_BODY4_SUM ) / GW_BODY1_SUM ) * 10000 ) ) / 100.
IF LW_CSS_DBSHL < 0.
LS_DBSHL = ABS( LW_CSS_DBSHL ).
CONCATENATE '-' LS_DBSHL INTO LS_DBSHL.
CONDENSE LS_DBSHL NO-GAPS.
ZZTPP_ZSTZ_HEAD-DBSHL = LS_DBSHL.
ELSE.
ZZTPP_ZSTZ_HEAD-DBSHL = LW_CSS_DBSHL.
ENDIF.
"损耗重量
ZZTPP_ZSTZ_HEAD-XHZL = GW_BODY1_SUM - GW_BODY3_SUM - GW_BODY4_SUM.
LW_CSS_XHZL = GW_BODY1_SUM - GW_BODY3_SUM - GW_BODY4_SUM.
IF LW_CSS_XHZL < 0.
LS_XHZL = ABS( LW_CSS_XHZL ).
CONCATENATE '-' LS_XHZL INTO LS_XHZL.
CONDENSE LS_XHZL NO-GAPS.
ZZTPP_ZSTZ_HEAD-XHZL = LS_XHZL.
ELSE.
ZZTPP_ZSTZ_HEAD-XHZL = LW_CSS_XHZL.
ENDIF.
ENDIF.
ENDFORM. "cl_sl_sl_data
*&---------------------------------------------------------------------*
*& Form bdc1_dynpro
*&---------------------------------------------------------------------*
* Start New Screen
*----------------------------------------------------------------------*
FORM BDC1_DYNPRO USING VALUE(PROGRAM) VALUE(DYNPRO).
CLEAR:GT_BDCDATA.
GT_BDCDATA-PROGRAM = PROGRAM.
GT_BDCDATA-DYNPRO = DYNPRO.
GT_BDCDATA-DYNBEGIN = 'X'.
APPEND GT_BDCDATA.
ENDFORM."BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form bdc1_field
*&---------------------------------------------------------------------*
* Insert field
*----------------------------------------------------------------------*
FORM BDC1_FIELD USING VALUE(FNAM) VALUE(FVAL).
CLEAR GT_BDCDATA.
GT_BDCDATA-FNAM = FNAM.
GT_BDCDATA-FVAL = FVAL.
APPEND GT_BDCDATA.
ENDFORM."BDC_FIELD
*&---------------------------------------------------------------------*
*& Form fill_rowcolor
*&---------------------------------------------------------------------*
* gz = 'Y' rowcolor = 'C410'
*----------------------------------------------------------------------*
FORM FILL_ROWCOLOR.
DATA: LW_FR_BODY1 TYPE ZZTPP_ZSTZ_BODY1,
LW_FR_BODY2 TYPE ZZTPP_ZSTZ_BODY2,
LW_FR_BODY4 TYPE ZZTPP_ZSTZ_BODY4,
LW_FR_BODY5 TYPE ZZTPP_ZSTZ_BODY5.
REFRESH: GT_BODY1,GT_BODY2,GT_BODY4,GT_BODY5.
CLEAR: LW_FR_BODY1,
LW_FR_BODY2,
LW_FR_BODY4,
LW_FR_BODY5.
SELECT * INTO TABLE GT_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LOOP AT GT_BODY1 INTO LW_FR_BODY1 WHERE ROWCOLOR = ''.
IF LW_FR_BODY1-GZ = 'Y'.
LW_FR_BODY1-ROWCOLOR = 'C410'.
ELSE.
LW_FR_BODY1-ROWCOLOR = ''.
ENDIF.
UPDATE ZZTPP_ZSTZ_BODY1
SET ROWCOLOR = LW_FR_BODY1-ROWCOLOR
WHERE BTBHA = LW_FR_BODY1-BTBHA
AND YLDM = LW_FR_BODY1-YLDM
AND YLPH = LW_FR_BODY1-YLPH
AND LGORT = LW_FR_BODY1-LGORT.
ENDLOOP.
SELECT * INTO TABLE GT_BODY2
FROM ZZTPP_ZSTZ_BODY2
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LOOP AT GT_BODY2 INTO LW_FR_BODY2 WHERE ROWCOLOR = ''.
IF LW_FR_BODY2-GZ = 'Y'.
LW_FR_BODY2-ROWCOLOR = 'C410'.
ELSE.
LW_FR_BODY2-ROWCOLOR = ''.
ENDIF.
UPDATE ZZTPP_ZSTZ_BODY2
SET ROWCOLOR = LW_FR_BODY2-ROWCOLOR
WHERE BTBHA = LW_FR_BODY2-BTBHA
AND FGPDM = LW_FR_BODY2-FGPDM
AND FGOPH = LW_FR_BODY2-FGOPH
AND YDDH = LW_FR_BODY2-YDDH
AND FGDDH = LW_FR_BODY2-FGDDH
AND LGORT = LW_FR_BODY2-LGORT.
ENDLOOP.
SELECT * INTO TABLE GT_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LOOP AT GT_BODY4 INTO LW_FR_BODY4 WHERE ROWCOLOR = ''.
IF LW_FR_BODY4-GZ = 'Y'.
LW_FR_BODY4-ROWCOLOR = 'C410'.
ELSE.
LW_FR_BODY4-ROWCOLOR = ''.
ENDIF.
UPDATE ZZTPP_ZSTZ_BODY4
SET ROWCOLOR = LW_FR_BODY4-ROWCOLOR
WHERE BTBHA = LW_FR_BODY4-BTBHA
AND YLDM = LW_FR_BODY4-YLDM
AND YLPH = LW_FR_BODY4-YLPH
AND LGORT = LW_FR_BODY4-LGORT
AND MBLNR = LW_FR_BODY4-MBLNR.
ENDLOOP.
*******Change at 2012-05-25
SELECT * INTO TABLE GT_BODY5
FROM ZZTPP_ZSTZ_BODY5
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LOOP AT GT_BODY5 INTO LW_FR_BODY5 WHERE ROWCOLOR = ''.
IF LW_FR_BODY5-GZ = 'Y'.
LW_FR_BODY5-ROWCOLOR = 'C410'.
ELSE.
LW_FR_BODY5-ROWCOLOR = ''.
ENDIF.
UPDATE ZZTPP_ZSTZ_BODY5
SET ROWCOLOR = LW_FR_BODY5-ROWCOLOR
WHERE BTBHA = LW_FR_BODY5-BTBHA
AND SCDDH = LW_FR_BODY5-SCDDH
AND BZWLH = LW_FR_BODY5-BZWLH
AND BZWPH = LW_FR_BODY5-BZWPH
AND LGORT = LW_FR_BODY5-LGORT.
ENDLOOP.
ENDFORM."BDC_FIELD
*&--------------------------------------------------------------
*& Form atdoubleclick1
*&--------------------------------------------------------------
FORM ATDOUBLECLICK1 USING P_E_ROW
P_E_COLUMN
P_ES_ROW_NO.
DATA: LW_DC_BODY1 TYPE ZZTPP_ZSTZ_BODY1.
REFRESH GT_BODY1.
SELECT * INTO TABLE GT_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR LW_DC_BODY1.
READ TABLE GT_BODY1 INTO LW_DC_BODY1 INDEX P_E_ROW.
ZZTPP_ZSTZ_BODY1-YLDM = LW_DC_BODY1-YLDM.
ZZTPP_ZSTZ_BODY1-YLPH = LW_DC_BODY1-YLPH.
ZZTPP_ZSTZ_BODY1-LGORT = LW_DC_BODY1-LGORT.
ZZTPP_ZSTZ_BODY1-ZL = LW_DC_BODY1-ZL.
LEAVE TO SCREEN 0010.
ENDFORM. " atdoubleclick1
*&--------------------------------------------------------------
*& Form atdoubleclick2
*&--------------------------------------------------------------
FORM ATDOUBLECLICK2 USING P_E_ROW
P_E_COLUMN
P_ES_ROW_NO.
DATA: LW_DC_BODY2 TYPE ZZTPP_ZSTZ_BODY2.
REFRESH GT_BODY2.
SELECT * INTO TABLE GT_BODY2
FROM ZZTPP_ZSTZ_BODY2
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR LW_DC_BODY2.
READ TABLE GT_BODY2 INTO LW_DC_BODY2 INDEX P_E_ROW.
ZZTPP_ZSTZ_BODY2-FGPDM = LW_DC_BODY2-FGPDM.
ZZTPP_ZSTZ_BODY2-FGOPH = LW_DC_BODY2-FGOPH.
ZZTPP_ZSTZ_BODY2-YDDH = LW_DC_BODY2-YDDH.
ZZTPP_ZSTZ_BODY2-FGDDH = LW_DC_BODY2-FGDDH.
ZZTPP_ZSTZ_BODY2-LGORT = LW_DC_BODY2-LGORT.
ZZTPP_ZSTZ_BODY2-ZL = LW_DC_BODY2-ZL.
LEAVE TO SCREEN 0010.
ENDFORM. " atdoubleclick2
*&--------------------------------------------------------------
*& Form atdoubleclick4
*&--------------------------------------------------------------
FORM ATDOUBLECLICK4 USING P_E_ROW
P_E_COLUMN
P_ES_ROW_NO.
DATA: LW_DC_BODY4 TYPE ZZTPP_ZSTZ_BODY4.
REFRESH GT_BODY4.
SELECT * INTO TABLE GT_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR LW_DC_BODY4.
READ TABLE GT_BODY4 INTO LW_DC_BODY4 INDEX P_E_ROW.
ZZTPP_ZSTZ_BODY4-YLDM = LW_DC_BODY4-YLDM.
ZZTPP_ZSTZ_BODY4-YLPH = LW_DC_BODY4-YLPH.
ZZTPP_ZSTZ_BODY4-LGORT = LW_DC_BODY4-LGORT.
ZZTPP_ZSTZ_BODY4-YLZL = LW_DC_BODY4-YLZL.
LEAVE TO SCREEN 0010.
ENDFORM. " atdoubleclick4
*&---------------------------------------------------------------------*
*& Form ATDOUBLECLICK5
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW text
* -->P_E_COLUMN text
* -->P_ES_ROW_NO text
*----------------------------------------------------------------------*
FORM ATDOUBLECLICK5 USING P_E_ROW
P_E_COLUMN
P_ES_ROW_NO.
DATA: LW_DC_BODY5 TYPE ZZTPP_ZSTZ_BODY5.
REFRESH GT_BODY5.
SELECT * INTO TABLE GT_BODY5
FROM ZZTPP_ZSTZ_BODY5
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR LW_DC_BODY5.
READ TABLE GT_BODY5 INTO LW_DC_BODY5 INDEX P_E_ROW.
ZZTPP_ZSTZ_BODY5-SCDDH = LW_DC_BODY5-SCDDH.
ZZTPP_ZSTZ_BODY5-BZWLH = LW_DC_BODY5-BZWLH.
ZZTPP_ZSTZ_BODY5-BZWPH = LW_DC_BODY5-BZWPH.
ZZTPP_ZSTZ_BODY5-LGORT = LW_DC_BODY5-LGORT.
ZZTPP_ZSTZ_BODY5-BZWSL = LW_DC_BODY5-BZWSL.
LEAVE TO SCREEN 0010.
ENDFORM. " ATDOUBLECLICK5
*&---------------------------------------------------------------------*
*& FORM CALLCO11N
*&---------------------------------------------------------------------*
* call co11n
*----------------------------------------------------------------------*
FORM CALLCO11N.
TYPES:BEGIN OF TY_CC_AUFNR,
MATNR TYPE ZCPDM,
LGORT TYPE LGORT_D,
AUFNR TYPE AUFNR,
CPCL TYPE ZCPCL,
END OF TY_CC_AUFNR.
TYPES:BEGIN OF TY_CC_MBLNR,
MBLNR TYPE MBLNR,
END OF TY_CC_MBLNR.
DATA: LW_CC_MBLNR TYPE TY_CC_MBLNR,
LT_CC_MBLNR TYPE TABLE OF TY_CC_MBLNR.
DATA: LW_CC_AUFNR TYPE TY_CC_AUFNR,
LT_CC_AUFNR TYPE TABLE OF TY_CC_AUFNR.
DATA: LW_MKPF TYPE GY_MKPF,
LW_MSEG TYPE GY_MSEG.
DATA: LW_CC_BODY5 TYPE ZZTPP_ZSTZ_BODY5,
LT_CC_BODY5 TYPE TABLE OF ZZTPP_ZSTZ_BODY5.
DATA: LW_CC_BUDAT(010).
DATA: LW_CC_CL(018).
DATA: LW_CC_BTBHA(025).
DATA:LV_MAKTX TYPE MAKTX,
LV_TP TYPE CHAR20 VALUE '托盘',
LV_BZZD TYPE CHAR20 VALUE '包装纸袋'.
DATA:LW_GOODSMVT_HEADER TYPE BAPI2017_GM_HEAD_01,
LW_GOODSMVT_CODE TYPE BAPI2017_GM_CODE,
LW_GOODSMVT_HEADRET TYPE BAPI2017_GM_HEAD_RET,
LW_MATERIALDOCUMENT TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
LW_MATDOCUMENTYEAR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR,
LT_GOODSMVT_ITEM TYPE STANDARD TABLE OF BAPI2017_GM_ITEM_CREATE,
LW_GOODSMVT_ITEM TYPE BAPI2017_GM_ITEM_CREATE,
LT_RETURN TYPE STANDARD TABLE OF BAPIRET2,
LW_RETURN TYPE BAPIRET2.
GV_TITLE = '过账确认'.
GV_TXT_QA = '是否过账'.
IF ZZTPP_ZSTZ_HEAD-GZ <> 'Y'.
MESSAGE S001(00) WITH '工时未过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
REFRESH GT_BODY2.
SELECT * INTO TABLE GT_BODY2
FROM ZZTPP_ZSTZ_BODY2
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND GZ = ''.
IF SY-SUBRC = 0.
MESSAGE S001(00) WITH '返工品未过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
REFRESH GT_BODY4.
SELECT * INTO TABLE GT_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND GZ = ''.
IF SY-SUBRC = 0.
MESSAGE S001(00) WITH '余料未过帐!' DISPLAY LIKE 'E'.
EXIT.
ELSE.
REFRESH GT_BODY5.
SELECT * INTO TABLE GT_BODY5
FROM ZZTPP_ZSTZ_BODY5
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA .
IF GT_BODY5 IS NOT INITIAL.
MESSAGE S001(00) WITH '包装物已录入并过账!' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
* 确认是否过账数据
PERFORM COFIRM_ACTION USING GV_TITLE
GV_TXT_QA
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
REFRESH: LT_CC_AUFNR,LT_CC_MBLNR.
SELECT MATNR
LGORT
CPDDH AS AUFNR
CPCL
INTO TABLE LT_CC_AUFNR
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
" WRITE zztpp_zstz_head-budat to lw_cc_budat MM/DD/YYYY.
" REPLACE '/' in lw_cc_budat WITH '.'.
LW_CC_BUDAT = ZZTPP_ZSTZ_HEAD-BUDAT.
"bapi抬头参数
CLEAR LW_GOODSMVT_HEADER.
LW_GOODSMVT_HEADER-PSTNG_DATE = ZZTPP_ZSTZ_HEAD-BUDAT.
LW_GOODSMVT_HEADER-DOC_DATE = ZZTPP_ZSTZ_HEAD-BUDAT.
LW_GOODSMVT_HEADER-PR_UNAME = SY-UNAME.
LW_GOODSMVT_HEADER-HEADER_TXT = ZZTPP_ZSTZ_HEAD-BTBHA."台班编号
CLEAR:LW_GOODSMVT_HEADRET,LW_MATERIALDOCUMENT,LW_MATDOCUMENTYEAR,LW_GOODSMVT_ITEM.
REFRESH LT_GOODSMVT_ITEM.
LOOP AT LT_CC_AUFNR INTO LW_CC_AUFNR.
* REFRESH gt_bdcdata[].
* REFRESH gt_messtab[].
* CLEAR :gt_bdcdata,gt_messtab.
* CLEAR :gt_bdcdata,gt_messtab.
CLEAR LV_MAKTX.
SELECT SINGLE MAKTX
INTO LV_MAKTX
FROM MAKT
WHERE MATNR = LW_CC_AUFNR-MATNR
AND SPRAS = SY-LANGU.
LW_CC_CL = LW_CC_AUFNR-CPCL.
* lw_goodsmvt_item-material = lw_cc_aufnr-matnr.
LW_GOODSMVT_ITEM-PLANT = '1201'. "工厂
LW_GOODSMVT_ITEM-STGE_LOC = LW_CC_AUFNR-LGORT."库存地点
LW_GOODSMVT_ITEM-MOVE_TYPE = '261'. "移动类型
LW_GOODSMVT_ITEM-ENTRY_QNT = LW_CC_AUFNR-CPCL. "数量
*单位设置
SEARCH LV_MAKTX FOR LV_TP.
IF SY-SUBRC = 0.
LW_GOODSMVT_ITEM-ENTRY_UOM = 'ZP'. "单位
ELSE.
LW_GOODSMVT_ITEM-ENTRY_UOM = 'PCS'. "单位
ENDIF.
LW_GOODSMVT_ITEM-ORDERID = LW_CC_AUFNR-AUFNR."订单号
APPEND LW_GOODSMVT_ITEM TO LT_GOODSMVT_ITEM.
ENDLOOP.
"bdc程序
* PERFORM bdc1_dynpro USING 'SAPLCORU_S' '0100'.
* PERFORM bdc1_field USING 'BDC_OKCODE'
* '/00'.
* PERFORM bdc1_field USING 'BDC_CURSOR'
* 'AFRUD-AUFNR'.
* PERFORM bdc1_field USING 'AFRUD-AUFNR'
* lw_cc_aufnr-aufnr.
* PERFORM bdc1_dynpro USING 'SAPLCORU_S' '0100'.
* PERFORM bdc1_field USING 'BDC_OKCODE'
* '/00'.
* PERFORM bdc1_field USING 'AFRUD-AUFNR'
* lw_cc_aufnr-aufnr.
* PERFORM bdc1_field USING 'BDC_CURSOR'
* 'AFRUD-LMNGA'.
* PERFORM bdc1_field USING 'AFRUD-LMNGA'
* lw_cc_cl.
* PERFORM bdc1_dynpro USING 'SAPLCORU_S' '0100'.
* PERFORM bdc1_field USING 'BDC_OKCODE'
* '/00'.
* PERFORM bdc1_field USING 'AFRUD-AUFNR'
* lw_cc_aufnr-aufnr.
* PERFORM bdc1_field USING 'AFRUD-LMNGA'
* lw_cc_cl.
* PERFORM bdc1_dynpro USING 'SAPLCORU_S' '0100'.
* PERFORM bdc1_field USING 'BDC_OKCODE'
* '=MB03'.
* PERFORM bdc1_field USING 'AFRUD-AUFNR'
* lw_cc_aufnr-aufnr.
* PERFORM bdc1_field USING 'AFRUD-LMNGA'
* lw_cc_cl.
* PERFORM bdc1_field USING 'BDC_CURSOR'
* 'AFRUD-BUDAT'.
* PERFORM bdc1_field USING 'AFRUD-BUDAT'
* lw_cc_budat.
* PERFORM bdc1_dynpro USING 'SAPLCOWB' '0130'.
* PERFORM bdc1_field USING 'BDC_CURSOR'
* 'COWB_COMP-CHARG(01)'.
*
* CLEAR:gt_messtab[],gt_messtab.
* CALL TRANSACTION 'CO11N' USING gt_bdcdata MODE 'E' UPDATE 'S' MESSAGES
* INTO gt_messtab.
* IF sy-subrc = 0.
* GET PARAMETER ID 'MBN' FIELD lw_cc_mblnr.
* APPEND lw_cc_mblnr-mblnr TO lt_cc_mblnr.
* ENDIF.
IF LT_GOODSMVT_ITEM IS NOT INITIAL.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = LW_GOODSMVT_HEADER
GOODSMVT_CODE = '03' "MB1A
IMPORTING
GOODSMVT_HEADRET = LW_GOODSMVT_HEADRET
MATERIALDOCUMENT = LW_MATERIALDOCUMENT
MATDOCUMENTYEAR = LW_MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = LT_GOODSMVT_ITEM
RETURN = LT_RETURN.
IF LW_MATERIALDOCUMENT IS NOT INITIAL.
APPEND LW_MATERIALDOCUMENT TO LT_CC_MBLNR.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT LT_RETURN INTO LW_RETURN .
IF LW_RETURN-TYPE = 'E'.
MESSAGE LW_RETURN-MESSAGE TYPE 'I'.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
* ENDLOOP.
* lw_cc_btbha = zztpp_zstz_head-btbha.
* LOOP AT lt_cc_mblnr INTO lw_cc_mblnr .
* REFRESH gt_bdcdata[].
* REFRESH gt_messtab[].
* CLEAR :gt_bdcdata,gt_messtab.
* CLEAR :gt_bdcdata,gt_messtab.
*
* PERFORM bdc1_dynpro USING 'SAPMM07M' '0460'.
* PERFORM bdc1_field USING 'BDC_CURSOR'
* 'RM07M-MBLNR'.
* PERFORM bdc1_field USING 'BDC_OKCODE'
* '=KK'.
* PERFORM bdc1_field USING 'RM07M-MBLNR'
* lw_cc_mblnr-mblnr.
* PERFORM bdc1_dynpro USING 'SAPMM07M' '0290'.
* PERFORM bdc1_field USING 'BDC_CURSOR'
* 'MKPF-BKTXT'.
* PERFORM bdc1_field USING 'BDC_OKCODE'
* '=BU'.
* PERFORM bdc1_field USING 'MKPF-BKTXT'
* lw_cc_btbha.
* CLEAR:gt_messtab[],gt_messtab.
* CALL TRANSACTION 'MB02' USING gt_bdcdata MODE 'N' UPDATE 'S' MESSAGES
* INTO gt_messtab.
*
* ENDLOOP.
REFRESH: GT_MKPF,
GT_MSEG.
REFRESH: GT_BODY5.
SELECT MBLNR
MJAHR
BKTXT
FROM MKPF
INTO TABLE GT_MKPF
WHERE BKTXT = ZZTPP_ZSTZ_HEAD-BTBHA. "台班编号
IF GT_MKPF IS NOT INITIAL.
SORT GT_MKPF BY MBLNR MJAHR.
SELECT MSEG~MBLNR
MSEG~MJAHR
MSEG~BWART
MSEG~MATNR
MSEG~CHARG "批号
MSEG~LGORT "存储位置
MSEG~MENGE "数量
MSEG~AUFNR "产品订单号
FROM MSEG
INTO TABLE GT_MSEG
FOR ALL ENTRIES IN GT_MKPF
WHERE MSEG~MBLNR = GT_MKPF-MBLNR
AND MSEG~MJAHR = GT_MKPF-MJAHR.
ELSE.
MESSAGE S001(00) WITH '数据不存在!' DISPLAY LIKE 'E'.
ENDIF.
IF GT_MKPF IS NOT INITIAL.
LOOP AT GT_MSEG INTO LW_MSEG.
CLEAR: GW_MAKTX.
SELECT SINGLE MAKTX
INTO GW_MAKTX
FROM MAKT
WHERE MATNR = LW_MSEG-MATNR.
IF LW_MSEG-MATNR+8(1) = '5'. "包装物
LW_CC_BODY5-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_CC_BODY5-SCDDH = LW_MSEG-AUFNR.
LW_CC_BODY5-BZWLH = LW_MSEG-MATNR.
LW_CC_BODY5-MAKTX = GW_MAKTX.
LW_CC_BODY5-BZWPH = LW_MSEG-CHARG.
LW_CC_BODY5-BZWSL = LW_MSEG-MENGE.
LW_CC_BODY5-MBLNR = LW_MSEG-MBLNR.
LW_CC_BODY5-LGORT = LW_MSEG-LGORT.
LW_CC_BODY5-GZ = 'Y'.
LW_CC_BODY5-ROWCOLOR = 'C410'.
MODIFY ZZTPP_ZSTZ_BODY5 FROM LW_CC_BODY5 .
ENDIF.
CLEAR LW_MSEG.
ENDLOOP.
ENDIF.
** Fill the dynamic table <fs_dyn_tab5>
SELECT BZWLH MAKTX BZWPH LGORT BZWSL SCDDH MBLNR ROWCOLOR
FROM ZZTPP_ZSTZ_BODY5 INTO TABLE <FS_DYN_TAB5>
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CALL METHOD OBJ_MY_ALV_GRID5->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDFORM. "callco11n
*&--------------------------------------------------------------
*& Form del1_data
*&--------------------------------------------------------------
*& 删除原料数据
*&--------------------------------------------------------------
FORM DEL1_DATA.
DATA: LW_D1_BODY1 TYPE ZZTPP_ZSTZ_BODY1.
GV_TITLE = '保存数据确认'.
GV_TXT_QA = '是否保存数据'.
IF ZZTPP_ZSTZ_BODY1-YLDM IS INITIAL OR ZZTPP_ZSTZ_BODY1-YLPH IS INITIAL.
MESSAGE S001(00) WITH '原料代码、原料批号不能为空!' DISPLAY LIKE 'E'.
ELSE.
CLEAR LW_D1_BODY1.
SELECT SINGLE * INTO LW_D1_BODY1
FROM ZZTPP_ZSTZ_BODY1
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND YLDM = ZZTPP_ZSTZ_BODY1-YLDM
AND YLPH = ZZTPP_ZSTZ_BODY1-YLPH
AND LGORT = ZZTPP_ZSTZ_BODY1-LGORT.
IF LW_D1_BODY1-GZ = 'Y'.
MESSAGE S001(00) WITH '此笔记录已过帐!' DISPLAY LIKE 'E'.
ELSE.
PERFORM COFIRM_ACTION USING '删除数据确认'
'是否删除数据'
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
LW_D1_BODY1-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
LW_D1_BODY1-YLDM = ZZTPP_ZSTZ_BODY1-YLDM.
LW_D1_BODY1-YLPH = ZZTPP_ZSTZ_BODY1-YLPH.
LW_D1_BODY1-LGORT = ZZTPP_ZSTZ_BODY1-LGORT.
DELETE ZZTPP_ZSTZ_BODY1 FROM LW_D1_BODY1.
IF SY-SUBRC = 0.
COMMIT WORK.
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
CLEAR: ZZTPP_ZSTZ_BODY1-YLDM,ZZTPP_ZSTZ_BODY1-YLPH,ZZTPP_ZSTZ_BODY1-ZL.
" Fill the dynamic table <fs_dyn_tab1>
* SELECT YLDM YLMS YLPH LGORT ZL
* FROM ZZTPP_ZSTZ_BODY1 INTO TABLE <FS_DYN_TAB1>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
PERFORM FILL_DYNAMIC_TABLE.
CALL METHOD OBJ_MY_ALV_GRID1->REFRESH_TABLE_DISPLAY.
MESSAGE '删除数据成功!' TYPE 'S'.
ELSE.
ROLLBACK WORK.
MESSAGE '删除数据失败!' TYPE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " del1_data
*&--------------------------------------------------------------
*& Form del2_data
*&--------------------------------------------------------------
*& 删除返工品数据
*&--------------------------------------------------------------
FORM DEL2_DATA.
DATA: LW_D2_BODY2 TYPE ZZTPP_ZSTZ_BODY2.
GV_TITLE = '保存数据确认'.
GV_TXT_QA = '是否保存数据'.
IF ZZTPP_ZSTZ_BODY2-FGPDM IS INITIAL OR ZZTPP_ZSTZ_BODY2-FGOPH IS INITIAL OR ZZTPP_ZSTZ_BODY2-FGDDH IS INITIAL.
MESSAGE S001(00) WITH '返工品代码、返工品批号、返工到订单号不能为空!' DISPLAY LIKE 'E'.
ELSE.
ZZTPP_ZSTZ_BODY2-BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
CLEAR GW_AUFNR.
SELECT SINGLE AUFNR
FROM MSEG
INTO GW_AUFNR
WHERE MATNR = ZZTPP_ZSTZ_BODY2-FGPDM
AND BWART = '101'
AND CHARG = ZZTPP_ZSTZ_BODY2-FGOPH.
ZZTPP_ZSTZ_BODY2-YDDH = GW_AUFNR.
CLEAR LW_D2_BODY2.
SELECT SINGLE * INTO LW_D2_BODY2
FROM ZZTPP_ZSTZ_BODY2
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND FGPDM = ZZTPP_ZSTZ_BODY2-FGPDM
AND FGOPH = ZZTPP_ZSTZ_BODY2-FGOPH
AND YDDH = ZZTPP_ZSTZ_BODY2-YDDH
AND FGDDH = ZZTPP_ZSTZ_BODY2-FGDDH
AND LGORT = ZZTPP_ZSTZ_BODY2-LGORT.
IF LW_D2_BODY2-GZ = 'Y'.
MESSAGE S001(00) WITH '此笔记录已过账!' DISPLAY LIKE 'E'.
ELSE.
PERFORM COFIRM_ACTION USING '删除数据确认'
'是否删除数据'
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
DELETE ZZTPP_ZSTZ_BODY2 FROM LW_D2_BODY2.
IF SY-SUBRC = 0.
COMMIT WORK.
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
CLEAR: ZZTPP_ZSTZ_BODY2-FGPDM,
ZZTPP_ZSTZ_BODY2-FGOPH,
ZZTPP_ZSTZ_BODY2-FGDDH,
ZZTPP_ZSTZ_BODY2-ZL.
"Fill the dynamic table <fs_dyn_tab2>
* SELECT FGPDM FGPMS FGOPH YDDH FGDDH LGORT ZL
* FROM ZZTPP_ZSTZ_BODY2 INTO TABLE <FS_DYN_TAB2>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
PERFORM FILL_DYNAMIC_TABLE.
CALL METHOD OBJ_MY_ALV_GRID2->REFRESH_TABLE_DISPLAY.
MESSAGE '删除数据成功!' TYPE 'S'.
ELSE.
ROLLBACK WORK.
MESSAGE '删除数据失败!' TYPE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " del2_data
*&--------------------------------------------------------------
*& Form del3_data
*&--------------------------------------------------------------
*& 删除余料数据
*&--------------------------------------------------------------
FORM DEL3_DATA.
DATA LW_D3_BODY4 TYPE ZZTPP_ZSTZ_BODY4.
GV_TITLE = '保存数据确认'.
GV_TXT_QA = '是否保存数据'.
IF ZZTPP_ZSTZ_BODY4-YLDM IS INITIAL OR ZZTPP_ZSTZ_BODY4-YLPH IS INITIAL.
MESSAGE S001(00) WITH '波纤/废线代码、余料批号不能为空!' DISPLAY LIKE 'E'.
ELSE.
CLEAR LW_D3_BODY4.
SELECT SINGLE * INTO LW_D3_BODY4
FROM ZZTPP_ZSTZ_BODY4
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND YLDM = ZZTPP_ZSTZ_BODY4-YLDM
AND YLPH = ZZTPP_ZSTZ_BODY4-YLPH
AND LGORT = ZZTPP_ZSTZ_BODY4-LGORT.
IF LW_D3_BODY4-GZ = 'Y'.
MESSAGE S001(00) WITH '此笔记录已过帐!' DISPLAY LIKE 'E'.
ELSE.
PERFORM COFIRM_ACTION USING '删除数据确认'
'是否删除数据'
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
DELETE ZZTPP_ZSTZ_BODY4 FROM LW_D3_BODY4.
IF SY-SUBRC = 0.
COMMIT WORK.
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
CLEAR:ZZTPP_ZSTZ_BODY4-YLDM,ZZTPP_ZSTZ_BODY4-YLPH,ZZTPP_ZSTZ_BODY4-YLZL.
"Fill the dynamic table <fs_dyn_tab3>
* SELECT YLDM YLMS YLPH LGORT YLZL
* FROM ZZTPP_ZSTZ_BODY4 INTO TABLE <FS_DYN_TAB4>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
PERFORM FILL_DYNAMIC_TABLE.
CALL METHOD OBJ_MY_ALV_GRID4->REFRESH_TABLE_DISPLAY.
MESSAGE '删除数据成功!' TYPE 'S'.
ELSE.
ROLLBACK WORK.
MESSAGE '删除数据失败!' TYPE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " del3_data
*&---------------------------------------------------------------------*
*& Form DEL4_DATA
*&---------------------------------------------------------------------*
* 删除包装物数据
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DEL4_DATA .
DATA LW_D4_BODY5 TYPE ZZTPP_ZSTZ_BODY5.
GV_TITLE = '保存数据确认'.
GV_TXT_QA = '是否保存数据'.
IF ZZTPP_ZSTZ_BODY5-SCDDH IS INITIAL OR
ZZTPP_ZSTZ_BODY5-BZWLH IS INITIAL OR
ZZTPP_ZSTZ_BODY5-BZWPH IS INITIAL.
MESSAGE S001(00) WITH '生产订单号、物料代码、批号不能为空!' DISPLAY LIKE 'E'.
ELSE.
CLEAR LW_D4_BODY5.
SELECT SINGLE * INTO LW_D4_BODY5
FROM ZZTPP_ZSTZ_BODY5
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND SCDDH = ZZTPP_ZSTZ_BODY5-SCDDH
AND BZWLH = ZZTPP_ZSTZ_BODY5-BZWLH
AND BZWPH = ZZTPP_ZSTZ_BODY5-BZWPH
AND LGORT = ZZTPP_ZSTZ_BODY5-LGORT.
IF LW_D4_BODY5-GZ = 'Y'.
MESSAGE S001(00) WITH '此笔记录已过帐!' DISPLAY LIKE 'E'.
ELSE.
PERFORM COFIRM_ACTION USING '删除数据确认'
'是否删除数据'
GV_TXT_BN1
GV_TXT_BN2
CHANGING GV_ANSWER.
IF GV_ANSWER = '1'. "是
DELETE ZZTPP_ZSTZ_BODY5 FROM LW_D4_BODY5.
IF SY-SUBRC = 0.
COMMIT WORK.
REFRESH:GT_HEAD.
"当班成材料 当班回收率 当班损耗率 损耗重量 数据计算
PERFORM CL_SL_SL_DATA .
APPEND ZZTPP_ZSTZ_HEAD TO GT_HEAD.
MODIFY ZZTPP_ZSTZ_HEAD FROM TABLE GT_HEAD.
CLEAR:ZZTPP_ZSTZ_BODY5-SCDDH,
ZZTPP_ZSTZ_BODY5-BZWLH,
ZZTPP_ZSTZ_BODY5-BZWPH,
ZZTPP_ZSTZ_BODY5-LGORT,
ZZTPP_ZSTZ_BODY5-BZWSL.
"Fill the dynamic table <fs_dyn_tab5>
* SELECT BZWLH MAKTX BZWPH LGORT BZWSL SCDDH MBLNR ROWCOLOR
* FROM ZZTPP_ZSTZ_BODY5 INTO TABLE <FS_DYN_TAB5>
* WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
PERFORM FILL_DYNAMIC_TABLE.
CALL METHOD OBJ_MY_ALV_GRID5->REFRESH_TABLE_DISPLAY.
MESSAGE '删除数据成功!' TYPE 'S'.
ELSE.
ROLLBACK WORK.
MESSAGE '删除数据失败!' TYPE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " DEL4_DATA
*&---------------------------------------------------------------------*
*& Form SET_LISTVALUE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SET_LISTVALUE .
TYPES:BEGIN OF T_AUFNR,
CPDDH TYPE ZCPDDH,
END OF T_AUFNR.
DATA:
I_LIST TYPE VRM_VALUES,
WA_LIST LIKE LINE OF I_LIST,
I_VALUE TYPE STANDARD TABLE OF T_AUFNR,
WA_VALUE LIKE LINE OF I_VALUE.
REFRESH : I_LIST , I_VALUE.
CLEAR : WA_LIST, WA_VALUE ." zztpp_zstz_body5-scddh.
*get value
SELECT CPDDH INTO TABLE I_VALUE
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
SORT I_VALUE BY CPDDH.
DELETE ADJACENT DUPLICATES FROM I_VALUE COMPARING ALL FIELDS.
LOOP AT I_VALUE INTO WA_VALUE.
WA_LIST-KEY = WA_VALUE-CPDDH."sy-tabix.
WA_LIST-TEXT = WA_VALUE-CPDDH.
APPEND WA_LIST TO I_LIST.
CLEAR : WA_LIST.
ENDLOOP.
*set value
IF I_VALUE IS NOT INITIAL.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'ZZTPP_ZSTZ_BODY5-SCDDH'
VALUES = I_LIST
EXCEPTIONS
ID_ILLEGAL_NAME = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
ENDFORM. " SET_LISTVALUE
*&---------------------------------------------------------------------*
*& Form FRM_CLEAR_SCREEN
*&---------------------------------------------------------------------*
* 清空当前屏幕
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_CLEAR_SCREEN .
CLEAR :
ZZTPP_ZSTZ_BODY1,
ZZTPP_ZSTZ_BODY2,
ZZTPP_ZSTZ_BODY4,
ZZTPP_ZSTZ_BODY5,
ZZTPP_ZSTZ_HEAD.
REFRESH :
<FS_DYN_TAB1>,
<FS_DYN_TAB2>,
<FS_DYN_TAB3>,
<FS_DYN_TAB4>,
<FS_DYN_TAB5>.
CALL METHOD OBJ_MY_ALV_GRID1->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID2->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID3->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID4->REFRESH_TABLE_DISPLAY.
CALL METHOD OBJ_MY_ALV_GRID5->REFRESH_TABLE_DISPLAY.
ENDFORM. " FRM_CLEAR_SCREEN
*&---------------------------------------------------------------------*
*& Form FRM_PRINT_INFO
*&---------------------------------------------------------------------*
* 打印当前页面
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_PRINT_INFO .
*定义Smartforms相关参数
DATA: ITAB LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE,
FM_NAME TYPE RS38L_FNAM,
FORMNAME TYPE TDSFNAME.
*定义传输的内表
DATA : I_HEAD TYPE STANDARD TABLE OF ZZTPP_ZSTZ_HEAD,
I_TAB1 TYPE STANDARD TABLE OF ZZTPP_ZSTZ_BODY1,
I_TAB2 TYPE STANDARD TABLE OF ZZTPP_ZSTZ_BODY2,
I_TAB3 TYPE STANDARD TABLE OF ZZTPP_ZSTZ_BODY3,
I_TAB4 TYPE STANDARD TABLE OF ZZTPP_ZSTZ_BODY4,
I_TAB5 TYPE STANDARD TABLE OF ZZTPP_ZSTZ_BODY5,
WA_HEAD TYPE ZZTPP_ZSTZ_HEAD,
WA_TAB1 TYPE ZZTPP_ZSTZ_BODY1,
WA_TAB2 TYPE ZZTPP_ZSTZ_BODY2,
WA_TAB3 TYPE ZZTPP_ZSTZ_BODY3,
WA_TAB4 TYPE ZZTPP_ZSTZ_BODY4,
WA_TAB5 TYPE ZZTPP_ZSTZ_BODY5.
DATA :
LV_LINE1 TYPE I,
LV_LINE2 TYPE I,
LV_LINE4 TYPE I,
LV_LINE5 TYPE I.
REFRESH : I_HEAD ,
I_TAB1 ,
I_TAB2 ,
I_TAB3 ,
I_TAB4 ,
I_TAB5 .
*台班头信息
MOVE-CORRESPONDING ZZTPP_ZSTZ_HEAD TO WA_HEAD.
APPEND WA_HEAD TO I_HEAD.
*原材料
LOOP AT <FS_DYN_TAB1> ASSIGNING <FS_DYN_WA>.
CLEAR : WA_TAB1.
MOVE-CORRESPONDING <FS_DYN_WA> TO WA_TAB1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = WA_TAB1-YLDM
IMPORTING
OUTPUT = WA_TAB1-YLDM.
APPEND WA_TAB1 TO I_TAB1.
ENDLOOP.
*返工品
LOOP AT <FS_DYN_TAB2> ASSIGNING <FS_DYN_WA>.
CLEAR : WA_TAB2.
MOVE-CORRESPONDING <FS_DYN_WA> TO WA_TAB2.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = WA_TAB2-FGPDM
IMPORTING
OUTPUT = WA_TAB2-FGPDM.
APPEND WA_TAB2 TO I_TAB2.
ENDLOOP.
*成品表
LOOP AT <FS_DYN_TAB3> ASSIGNING <FS_DYN_WA>.
CLEAR : WA_TAB3.
MOVE-CORRESPONDING <FS_DYN_WA> TO WA_TAB3.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = WA_TAB3-MATNR
IMPORTING
OUTPUT = WA_TAB3-MATNR.
APPEND WA_TAB3 TO I_TAB3.
ENDLOOP.
*波纤
LOOP AT <FS_DYN_TAB4> ASSIGNING <FS_DYN_WA>.
CLEAR : WA_TAB4.
MOVE-CORRESPONDING <FS_DYN_WA> TO WA_TAB4.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = WA_TAB4-YLDM
IMPORTING
OUTPUT = WA_TAB4-YLDM.
APPEND WA_TAB4 TO I_TAB4.
ENDLOOP.
*包装物
LOOP AT <FS_DYN_TAB5> ASSIGNING <FS_DYN_WA>.
CLEAR : WA_TAB5.
MOVE-CORRESPONDING <FS_DYN_WA> TO WA_TAB5.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = WA_TAB5-BZWLH
IMPORTING
OUTPUT = WA_TAB5-BZWLH.
APPEND WA_TAB5 TO I_TAB5.
ENDLOOP.
*内表记录条数
DESCRIBE TABLE I_TAB1 LINES LV_LINE1.
DESCRIBE TABLE I_TAB2 LINES LV_LINE2.
DESCRIBE TABLE I_TAB4 LINES LV_LINE4.
DESCRIBE TABLE I_TAB5 LINES LV_LINE5.
LV_LINE1 = 8 - LV_LINE1.
LV_LINE2 = 8 - LV_LINE2.
LV_LINE4 = 8 - LV_LINE4.
LV_LINE5 = 8 - LV_LINE5.
DO LV_LINE1 TIMES .
CLEAR WA_TAB1.
APPEND WA_TAB1 TO I_TAB1.
ENDDO.
DO LV_LINE2 TIMES.
CLEAR WA_TAB2.
APPEND WA_TAB2 TO I_TAB2.
ENDDO.
DO LV_LINE4 TIMES .
CLEAR WA_TAB4.
APPEND WA_TAB4 TO I_TAB4.
ENDDO.
DO LV_LINE5 TIMES .
CLEAR WA_TAB5.
APPEND WA_TAB5 TO I_TAB5.
ENDDO.
*调用Smartforms
FORMNAME = 'ZSCTB_FORM'.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = FORMNAME
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
FM_NAME = FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION FM_NAME
TABLES
I_HEAD = I_HEAD
I_TAB1 = I_TAB1
I_TAB2 = I_TAB2
I_TAB3 = I_TAB3
I_TAB4 = I_TAB4
I_TAB5 = I_TAB5
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
.
ENDFORM. " FRM_PRINT_INFO
*&---------------------------------------------------------------------*
*& Form FRM_FGP_UPDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_FGP_UPDATE .
DATA: LW_P2_BODY2 TYPE ZZTPP_ZSTZ_BODY2,
LW_P2_BODY3 TYPE ZZTPP_ZSTZ_BODY3.
REFRESH GT_BODY2."取返工品信息表信息
REFRESH GT_FGDDH."返工品汇总表 - 全部的数量
REFRESH GT_XTDD."返工品原订单号=返工到订单号时, 成品产量中扣除相应数额
*取返工品信息
SELECT *
FROM ZZTPP_ZSTZ_BODY2
INTO TABLE GT_BODY2
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
*汇总
CLEAR LW_P2_BODY2.
LOOP AT GT_BODY2 INTO LW_P2_BODY2.
IF LW_P2_BODY2-YDDH = LW_P2_BODY2-FGDDH.
GW_XTDD-YDDH = LW_P2_BODY2-YDDH.
GW_XTDD-FGDDH = LW_P2_BODY2-FGDDH.
GW_XTDD-ZL = LW_P2_BODY2-ZL.
COLLECT GW_XTDD INTO GT_XTDD.
ENDIF.
GW_FGDDH-FGDDH = LW_P2_BODY2-FGDDH.
GW_FGDDH-ZL = LW_P2_BODY2-ZL.
COLLECT GW_FGDDH INTO GT_FGDDH.
ENDLOOP.
CLEAR LW_P2_BODY3.
LOOP AT GT_FGDDH INTO GW_FGDDH.
SELECT SINGLE * INTO LW_P2_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND CPDDH = GW_FGDDH-FGDDH.
IF SY-SUBRC = 0.
*返工品数量
LW_P2_BODY3-FGP = GW_FGDDH-ZL.
*原料产出合计 = 成品产出合计 - 返工品重量
LW_P2_BODY3-YLCCHJ = LW_P2_BODY3-CPCCHEJ - LW_P2_BODY3-FGP.
ENDIF.
UPDATE ZZTPP_ZSTZ_BODY3
SET FGP = LW_P2_BODY3-FGP
YLCCHJ = LW_P2_BODY3-YLCCHJ
WHERE BTBHA = LW_P2_BODY3-BTBHA
AND MATNR = LW_P2_BODY3-MATNR
AND CPDDH = LW_P2_BODY3-CPDDH
AND LGORT = LW_P2_BODY3-LGORT.
ENDLOOP.
CLEAR LW_P2_BODY3.
CLEAR GW_XTDD.
REFRESH GT_BODY3.
*取成品信息
SELECT * INTO TABLE GT_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
*返工品原订单号 = 返工到订单号
IF GT_XTDD IS INITIAL .
*如果不是返工到原订单的按照产量=产品产出合计 来计算
LOOP AT GT_BODY3 INTO LW_P2_BODY3 .
LW_P2_BODY3-CPCL = LW_P2_BODY3-CPCCHEJ.
UPDATE ZZTPP_ZSTZ_BODY3
SET CPCL = LW_P2_BODY3-CPCL
WHERE BTBHA = LW_P2_BODY3-BTBHA
AND MATNR = LW_P2_BODY3-MATNR
AND CPDDH = LW_P2_BODY3-CPDDH
AND LGORT = LW_P2_BODY3-LGORT.
ENDLOOP.
ELSE.
*也需要先赋值,稍微进行扣减
LOOP AT GT_BODY3 INTO LW_P2_BODY3 .
LW_P2_BODY3-CPCL = LW_P2_BODY3-CPCCHEJ.
UPDATE ZZTPP_ZSTZ_BODY3
SET CPCL = LW_P2_BODY3-CPCL
WHERE BTBHA = LW_P2_BODY3-BTBHA
AND MATNR = LW_P2_BODY3-MATNR
AND CPDDH = LW_P2_BODY3-CPDDH
AND LGORT = LW_P2_BODY3-LGORT.
ENDLOOP.
*否则进行扣减
LOOP AT GT_XTDD INTO GW_XTDD.
SELECT SINGLE * INTO LW_P2_BODY3
FROM ZZTPP_ZSTZ_BODY3
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND CPDDH = GW_XTDD-YDDH.
IF SY-SUBRC = 0 AND GW_XTDD-ZL <> 0.
LW_P2_BODY3-CPCL = LW_P2_BODY3-CPCCHEJ - GW_XTDD-ZL.
ELSE.
* LW_P2_BODY3-CPCL = LW_P2_BODY3-CPCCHEJ.
EXIT.
ENDIF.
UPDATE ZZTPP_ZSTZ_BODY3
SET CPCL = LW_P2_BODY3-CPCL
WHERE BTBHA = LW_P2_BODY3-BTBHA
AND MATNR = LW_P2_BODY3-MATNR
AND CPDDH = LW_P2_BODY3-CPDDH
AND LGORT = LW_P2_BODY3-LGORT.
ENDLOOP.
ENDIF.
COMMIT WORK.
ENDFORM. " FRM_FGP_UPDATE
*&---------------------------------------------------------------------*
*& Form FRM_WRITE_OFF
*&---------------------------------------------------------------------*
* 冲销报工 Cancel production order confirmation
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_WRITE_OFF .
DATA :
GW_MESSAGE TYPE TY_MESSAGE,
I_AFRU TYPE STANDARD TABLE OF AFRU,
WA_AFRU TYPE AFRU,
LV_RETURN TYPE C,
LV_ERROR TYPE C,
LV_FLAG TYPE C.
*Bapi 参数定义
DATA :
LW_CONFIRMATION TYPE BAPI_PP_CONF_KEY-CONF_NO, "操作完成的确认编号
LW_CONFIRMATIONCOUNTER TYPE BAPI_PP_CONF_KEY-CONF_CNT, "确认计数器
LW_POSTG_DATE TYPE BAPI_PP_CONFIRM-POSTG_DATE,"记帐日期
LW_CONF_TEXT TYPE BAPI_PP_CONFIRM-CONF_TEXT, "确认文本
LW_RETURN TYPE BAPIRET1,
LW_LOCKED TYPE BAPI_CORU_PARAM-LOCKED, "标识符: 条目冻结
LW_CREATED_CONF_NO TYPE BAPI_PP_CONF_KEY-CONF_NO,"操作完成的确认编号
LW_CREATED_CONF_COUNT TYPE BAPI_PP_CONF_KEY-CONF_CNT."确认计数器
REFRESH : I_AFRU.
CLEAR : WA_AFRU.
SELECT SINGLE GZ
FROM ZZTPP_ZSTZ_HEAD
INTO LV_FLAG
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
IF SY-SUBRC <> 0.
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-BTBHA'.
MESSAGE '台班班号不存在!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ELSE.
IF LV_FLAG <> 'Y'.
"未报工
SET CURSOR FIELD 'ZZTPP_ZSTZ_HEAD-BTBHA'.
MESSAGE '此台班还未报工!' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ELSE.
"已经报工
GV_TITLE = '取消产品订单确认'.
GV_TXT_QA = '是否冲销报工?'.
PERFORM COFIRM_ACTION USING GV_TITLE
GV_TXT_QA
GV_TXT_BN1
GV_TXT_BN2
CHANGING LV_RETURN.
IF LV_RETURN = '1'. "是
SELECT *
FROM AFRU
INTO CORRESPONDING FIELDS OF TABLE I_AFRU
WHERE LTXA1 = ZZTPP_ZSTZ_HEAD-BTBHA
AND STOKZ <> 'X'
AND STZHL = ''.
IF SY-SUBRC = 0.
LV_ERROR = ''.
LOOP AT I_AFRU INTO WA_AFRU.
LW_CONFIRMATION = WA_AFRU-RUECK. "操作完成的确认编号
LW_CONFIRMATIONCOUNTER = WA_AFRU-RMZHL. "确认计数器
LW_POSTG_DATE = WA_AFRU-BUDAT. "记帐日期
LW_CONF_TEXT = WA_AFRU-LTXA1. "确认文本
CALL FUNCTION 'BAPI_PRODORDCONF_CANCEL'
EXPORTING
CONFIRMATION = LW_CONFIRMATION
CONFIRMATIONCOUNTER = LW_CONFIRMATIONCOUNTER
POSTG_DATE = LW_POSTG_DATE
CONF_TEXT = LW_CONF_TEXT
IMPORTING
RETURN = LW_RETURN
LOCKED = LW_LOCKED
CREATED_CONF_NO = LW_CREATED_CONF_NO
CREATED_CONF_COUNT = LW_CREATED_CONF_COUNT.
"消息类型: S 成功,E 错误,W 警告,I 信息,A 中断
IF SY-SUBRC <> 0
OR LW_RETURN-TYPE = 'E'
OR LW_RETURN-TYPE = 'A'
* OR LW_RETURN-TYPE = 'W'
* OR LW_RETURN-TYPE = 'I'
.
"冲销失败,显示错误消息
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
MESSAGE LW_RETURN-MESSAGE TYPE 'I'.
LV_ERROR = 'X'.
EXIT.
"确认的方法调用无效 A RU 806
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDIF.
CLEAR : LW_CONFIRMATION,
LW_CONFIRMATIONCOUNTER,
LW_POSTG_DATE,
LW_CONF_TEXT,
LW_RETURN ,
LW_LOCKED,
LW_CREATED_CONF_NO,
LW_CREATED_CONF_COUNT.
ENDLOOP.
"冲销成功,更新过账标记
IF LV_ERROR = ''.
UPDATE ZZTPP_ZSTZ_HEAD
SET GZ = ''
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA
AND GZ = 'Y'.
IF SY-SUBRC = 0.
COMMIT WORK.
"刷新显示
SELECT SINGLE *
FROM ZZTPP_ZSTZ_HEAD
WHERE BTBHA = ZZTPP_ZSTZ_HEAD-BTBHA.
MESSAGE '取消产品订单确认成功!' TYPE 'I'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " FRM_WRITE_OFF
*&---------------------------------------------------------------------*
*& Module CHECK_INPUT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE CHECK_INPUT_1 INPUT.
IF ZZTPP_ZSTZ_HEAD-SBZZJS IS NOT INITIAL.
ZZTPP_ZSTZ_HEAD-QTTJSJ = ZZTPP_ZSTZ_HEAD-SBZZJS - ZZTPP_ZSTZ_HEAD-SBQSJS.
ENDIF.
ENDMODULE. " CHECK_INPUT INPUT
*&---------------------------------------------------------------------*
*& Module CHECK_INPUT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE CHECK_INPUT_2 INPUT.
IF ZZTPP_ZSTZ_HEAD-AVEJJ IS INITIAL AND ZZTPP_ZSTZ_HEAD-BTBHA+(1) = 'G'.
ZZTPP_ZSTZ_HEAD-AVEJJ = ZZTPP_ZSTZ_HEAD-BZWZS / 5.
ENDIF.
ENDMODULE. " CHECK_INPUT INPUT
*&---------------------------------------------------------------------*
*& Form FRM_SET_BBORYB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_SET_BBORYB .
DATA :
LV_WA_LIST LIKE LINE OF I_LIST.
IF I_LIST IS INITIAL.
*白班 : 1
CLEAR LV_WA_LIST.
LV_WA_LIST-KEY = '1'.
LV_WA_LIST-TEXT = C_BB.
APPEND LV_WA_LIST TO I_LIST.
*夜班 : 0
CLEAR LV_WA_LIST.
LV_WA_LIST-KEY = '0'.
LV_WA_LIST-TEXT = C_YB.
APPEND LV_WA_LIST TO I_LIST.
ENDIF.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'ZZTPP_ZSTZ_HEAD-BB1YB'
VALUES = I_LIST
* EXCEPTIONS
* ID_ILLEGAL_NAME = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " FRM_SET_BBORYB