生成转储拣配单的ABAP程序
report ZE_MM_SCPSDD
*---------------------------生成转储拣配单的ABAP程序-------------------------------------------*
* data definition
*----------------------------------------------------------------------*
type-pools: slis.
* Batchinputdata of single transaction
DATA: BDCDATA LIKEBDCDATA OCCURS 0 WITH HEADERLINE.
* messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLLOCCURS 0 WITH HEADER LINE.
* error session opened (' ' or 'X')
DATA: E_GROUP_OPENED.
* message texts
TABLES: RESB , AFPO ,AFKO, MARA ,EKET ,ZSCPSDD ,EKKO,MARC,ZDSCDD,zlog.
data: mdezx like mdez occurs 0.
data: wa_mdezx like lineof mdezx.
data: mdpsx like mdps occurs 0.
data: wa_mdpsx like lineof mdpsx.
data: mdsux like mdsu occurs 0.
DATA: begin of itab_mrp OCCURS0,
RSNUM like RESB-RSNUM ,"预留号#
RSPOS like RESB-RSPOS ,"预留项目
MATNR like RESB-MATNR ,"物料号码#
MAKTX like MAKT-MAKTX ,"物料描述#
BDMNG like RESB-BDMNG ,"需求量#
BDTER like RESB-BDTER ,"需求日期#
LABST like MARD-LABST ,"库存量
MENGE like RESB-BDMNG ,"采购订单数量,配送量
WERKS like RESB-WERKS ,"@@新增工厂
LGORT like RESB-LGORT ,"@@新增仓库
AUFNR like RESB-AUFNR ,"相关生产订单
GSTRP like AFKO-GSTRP ,"生产订单基本开始时间
ARBPL like CRHD-ARBPL ,"工作中心
AUFPL like RESB-AUFPL ,"计划工艺路线号
APLZL like RESB-APLZL ,"计数器
DELB0 like mdez-DELB0 ,"MRP(物料需求计划)元素
PLNBEZ like afko-PLNBEZ ,"MRP(物料需求计划)数据
end of itab_mrp.
**调用BAPI所需要的内表
**参照ZTEST_BAPI_CREATE_PO
**************************
DATA:itab_poheader LIKE bapimepoheader OCCURS 0 WITH HEADERLINE,
itab_poheaderx LIKE bapimepoheaderx OCCURS 0 WITH HEADERLINE,
itab_poitems LIKE bapimepoitem OCCURS 0 WITH HEADER LINE,
itab_poitemx LIKE bapimepoitemx OCCURS 0 WITH HEADER LINE,
exppurchaseorder LIKE bapimepoheader-po_number,
itab_itemsche LIKEbapimeposchedule OCCURS 0 WITHHEADER LINE,
itab_itemschex LIKE BAPIMEPOSCHEDULX OCCURS 0 WITH HEADER LINE,
return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA:BEGIN OF recordhead OCCURS 0,
LIFNR_001like EKKO-LIFNR,"供应商帐户号1800
BSART_002like RM06E-BSART ,"订单类型(采购):ZEB
BEDAT_003like RM06E-BEDAT,"采购订单日期:sy-datum
EKORG_004like EKKO-EKORG ,"采购组织:2000
EKGRP_005like EKKO-EKGRP, "采购组:F01
EEIND_006like RM06E-EEIND ,"交货日期:P_EINDT
LPEIN_007like RM06E-LPEIN ,"交货日的类别:T
WERKS_008like RM06E-WERKS ,"工厂:P_WERKS
LGORT_009like RM06E-LGORT, "库存地点:P_LGORT
END OFrecordhead.
data: begin of record OCCURS0,
CHKID TYPE c,
RSNUM like RESB-RSNUM ,"预留号#
RSPOS like RESB-RSPOS ,"预留项目
MATNR like RESB-MATNR ,"物料号码#
MAKTX like MAKT-MAKTX ,"物料描述#
BDMNG like RESB-BDMNG ,"需求量#
BDTER like RESB-BDTER ,"需求日期#
LABST like MARD-LABST ,"库存量
MENGE like RESB-BDMNG ,"采购订单数量,配送量
WERKS like RESB-WERKS ,"@@新增工厂
LGORT like RESB-LGORT ,"@@新增仓库
AUFNR like RESB-AUFNR ,"相关生产订单
GSTRP like AFKO-GSTRP ,"生产订单基本开始时间
ARBPL like CRHD-ARBPL ,"工作中心
AUFPL like RESB-AUFPL ,"计划工艺路线号
APLZL like RESB-APLZL ,"计数器
* VORNR like RESB-VORNR ,"作业
* PLNFL like RESB-PLNFL ,"序列
end of record.
DATA: recordline like LINE OF record.
*DATA : record LIKE TABLE OF ZSCPSDD001 WITH HEADER LINE.
*** End generated data section ***
DATA:selrecord like TABLE OF record WITH HEADER LINE.
DATA:instab like TABLE OF zdscdd WITH HEADER LINE.
DATA: pmode TYPE c VALUE 'E' ,
umode TYPE cVALUE 'S'.
DATA: begin of sumrecord OCCURS0,
CHKID(1) , "选择
MATNR like RESB-MATNR ,"物料号码#
MAKTX like MAKT-MAKTX ,"物料描述#
EEIND like RM06E-EEIND,"交货日期
BDMNG like RESB-BDMNG ,"需求量#
LABST like MARD-LABST ,"库存量
ZTKCL like MARD-LABST ,"在途库存
MENGE like RESB-BDMNG ,"采购订单数量,配送量
WERKS like RESB-WERKS ,"@@新增工厂
LGORT like RESB-LGORT ,"@@新增仓库
ARBPL like CRHD-ARBPL ,"工作中心
end of sumrecord .
DATA: sumrecord_wa like line of sumrecord.
DATA: begin of msgtab occurs 0,
msg(255),
msgtype(1),
end of msgtab.
*DATA: msg(255),msgtype(1).
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE t01.
SELECT-OPTIONS: P_WERKS FOR RESB-WERKSOBLIGATORY NO intervalsNO-EXTENSION."工厂
SELECT-OPTIONS: P_LGORT FOR RESB-LGORTOBLIGATORY ."线边库 NO intervalsNO-EXTENSION
SELECT-OPTIONS: P_AUFNR FORAFPO-AUFNR ."生产订单号
SELECT-OPTIONS: P_BDTER FOR RESB-BDTEROBLIGATORY NO intervalsNO-EXTENSION ."需求日期
SELECT-OPTIONS: P_MATKL FORMARA-MATKL ."物料组
SELECT-OPTIONS: P_MATNR FORRESB-MATNR ."物料号
SELECT-OPTIONS: P_EINDT FOR EKET-EINDT OBLIGATORY NO intervalsNO-EXTENSION DEFAULT sy-datum."交货日期
PARAMETERS: P_PSRADIOBUTTON GROUP PSBZ.
PARAMETERS: P_FPSRADIOBUTTON GROUP PSBZ.
SELECTION-SCREEN: END OF BLOCK b1.
SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE t02.
SELECT-OPTIONS: P_WERKS2 FOR MARC-WERKSOBLIGATORY NO intervalsNO-EXTENSION."发货工厂
SELECT-OPTIONS: P_LGFSB FOR MARC-LGFSB ."发货存储地点
SELECTION-SCREEN: END OF BLOCK b2.
*SELECTION-SCREEN: BEGIN OF BLOCK b3 WITH FRAME TITLE t03.
*PARAMETERS: P_SCSL TYPE I DEFAULT '200' OBLIGATORY .
*SELECTION-SCREEN: END OF BLOCK b3.
*SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLEtext-001.
*PARAMETERS: pmode TYPE c DEFAULT 'N' OBLIGATORY.
*PARAMETERS: umode TYPE c DEFAULT 'A' OBLIGATORY.
*SELECTION-SCREEN: END OF BLOCK b2.
DATA: i_private TYPE slis_data_caller_exit,
i_selfield TYPE slis_selfield,
W_exit(1) TYPE c.
INITIALIZATION.
t01 = '收货信息'.
t02 = '发货信息'.
* t03 = '输出参数'.
start-of-selection.
perform write_zlog.
perform get_recordhead .
perform get_record .
LOOP AT record." 全部计数WHERECHKID = 'X'.
selrecord-CHKID =record-CHKID .
selrecord-RSNUM =record-RSNUM .
selrecord-RSPOS =record-RSPOS .
selrecord-MATNR =record-MATNR .
selrecord-MAKTX =record-MAKTX .
selrecord-BDMNG =record-BDMNG .
selrecord-BDTER =record-BDTER .
selrecord-LABST =record-LABST .
selrecord-MENGE =record-MENGE .
selrecord-WERKS =record-WERKS .
selrecord-LGORT =record-LGORT .
selrecord-AUFPL =record-AUFPL .
selrecord-ARBPL =record-ARBPL .
append selrecord .
clear selrecord .
ENDLOOP.
*SHIFT P_EINDT BY 3 PLACES LEFT.
LOOP AT selrecord .
DATA ARBPL2 likeCRHD-ARBPL.
CLEAR ARBPL2.
LOOP AT sumrecord where matnr= selrecord-matnr.
ARBPL2 = sumrecord-ARBPL.
ENDLOOP.
sumrecord-MATNR =selrecord-MATNR .
sumrecord-MAKTX =selrecord-MAKTX .
sumrecord-EEIND =P_EINDT.
sumrecord-BDMNG =selrecord-BDMNG .
sumrecord-WERKS =selrecord-WERKS .
sumrecord-LGORT =selrecord-LGORT .
IF ARBPL2 is initial.
sumrecord-ARBPL = selrecord-ARBPL.
ELSE.
sumrecord-ARBPL = ARBPL2.
ENDIF.
collect sumrecord .
clear sumrecord .
ENDLOOP.
LOOP AT sumrecord.
DATA: begin of itab_arbploccurs 0 ,
matnr like resb-matnr ,
werks like resb-werks,
lgort like resb-lgort,
ARBPL like CRHD-ARBPL ,
counts type int4,
end of itab_arbpl.
clear itab_arbpl.
refresh itab_arbpl.
LOOP AT selrecord where matnr= sumrecord-matnr and werks = sumrecord-werks and lgort =sumrecord-lgort.
itab_arbpl-matnr = selrecord-matnr.
itab_arbpl-werks = selrecord-werks.
itab_arbpl-lgort = selrecord-lgort.
itab_arbpl-arbpl = selrecord-arbpl.
itab_arbpl-counts = 1.
collect itab_arbpl.
clear itab_arbpl.
ENDLOOP.
sort itab_arbpl BY countsDESCENDING .
LOOP AT itab_arbpl .
if sy-tabix= 1.
sumrecord-arbpl= itab_arbpl-arbpl.
endif.
endloop.
modify sumrecord.
ENDLOOP.
*定义采购相关内表,获取采购数量
DATA: BEGIN OF cgsltab occurs0,
MATNR LIKEEKPO-MATNR,
WERKS LIKEEKPO-WERKS,
LGORT LIKEEKPO-LGORT,
MENGE LIKEEKPO-MENGE,
EBELN LIKEEKPO-EBELN,
EBELP LIKEEKPO-EBELP,
BSART LIKEEKKO-BSART,
EINDT LIKEEKET-EINDT,
END OFcgsltab.
DATA: cgsl typeEKPO-MENGE.
LOOP AT sumrecord .
clear cgsltab.
refresh cgsltab.
"@@因为非限制库存只有一份,不能放在上面的collect中
LOOP ATselrecord WHERE MATNR =sumrecord-MATNR and LGORT =sumrecord-LGORT .
sumrecord-LABST = selrecord-LABST .
ENDLOOP.
sumrecord-MENGE =sumrecord-BDMNG - sumrecord-LABST .
*在这里求在途库存量
*ZEB采购-101+102+122
SELECT EBELN
EBELP
MATNR
WERKS
LGORT
MENGE
INTOCORRESPONDING FIELDS OF TABLE cgsltab "modify by hurd for index
FROM EKPO
WHERE MATNR =sumrecord-MATNR
and WERKS =sumrecord-WERKS
and LGORT =sumrecord-LGORT
and LOEKZ<>'L' "已删除标志
and ELIKZ<> 'X'. "已完成交货
LOOP AT cgsltab.
SELECT SINGLE BSART INTO cgsltab-BSART
FROM EKKO
WHERE EBELN = cgsltab-EBELN.
"@@1.3(2)排除非ZEB的采购订单
if cgsltab-BSART <>'ZEB'.
DELETEcgsltab index sy-tabix.
continue.
ENDIF.
"@@1.3(3)排除日期大于需求日期的
SELECT SINGLE EINDT INTO cgsltab-EINDT
FROM EKET
WHERE EBELN = cgsltab-EBELN and EBELP =cgsltab-EBELP.
if cgsltab-EINDT > P_BDTER.
deletecgsltab index sy-tabix.
continue.
ENDIF.
modify cgsltab.
clear cgsltab.
ENDLOOP.
"@@1.3(2)去除相应的收货-101+102+122
LOOP AT cgsltab.
DATA: 101_sl type EKPO-MENGE,
102_sl typeEKPO-MENGE,
122_sl typeEKPO-MENGE.
101_sl = 0.
102_sl = 0.
122_sl = 0.
SELECT MENGE FROM EKBE
INTO 101_sl
WHERE EBELN = cgsltab-EBELN
and EBELP = cgsltab-EBELP
and BWART = '101'.
cgsltab-MENGE= cgsltab-MENGE - 101_sl .
ENDSELECT.
SELECT MENGE FROM EKBE
INTO 102_sl
WHERE EBELN = cgsltab-EBELN
and EBELP = cgsltab-EBELP
and BWART = '102'.
cgsltab-MENGE= cgsltab-MENGE + 102_sl .
ENDSELECT.
SELECT MENGE FROM EKBE
INTO 122_sl
WHERE EBELN = cgsltab-EBELN
and EBELP = cgsltab-EBELP
and BWART = '122'.
cgsltab-MENGE= cgsltab-MENGE + 122_sl .
ENDSELECT.
modify cgsltab.
clear cgsltab.
ENDLOOP.
"求得总采购数量
cgsl = 0 .
LOOP AT cgsltab.
cgsl = cgsl + cgsltab-MENGE.
ENDLOOP.
"@@在途总量
sumrecord-ZTKCL = cgsl.
sumrecord-MENGE =sumrecord-MENGE - sumrecord-ZTKCL.
"考虑将其圆整
DATA: BSTRF likeMARC-BSTRF.
SELECT SINGLE BSTRF FROMMARC
INTO BSTRF
WHERE MATNR = sumrecord-MATNRand WERKS = P_WERKS2.
IF BSTRF is not initial andBSTRF <> 0.
sumrecord-MENGE = CEIL( sumrecord-MENGE / BSTRF )* BSTRF .
ENDIF.
Modify sumrecord .
clear sumrecord .
ENDLOOP.
LOOP AT sumrecord .
if sumrecord-MENGE<= 0 .
delete sumrecord index sy-tabix.
endif.
ENDLOOP.
if sumrecord[] is initial.
MESSAGE '线边库善有充足库存无需配送!' TYPE'I'.
* Leave toscreen 0.
STOP.
* CALL TRANSACTION 'ZSCPSDD'USING bdcdata MODE pmode UPDATE umode
* MESSAGESINTO messtab.
ELSE.
perform displaying.
endif. "end of sumrecord[] isinitial .
TOP-OF-PAGE.
END-OF-selection .
* SET PF-STATUS'SCPSDD001'.
*AT USER-COMMAND.
* PERFORM user_command.
*----------------------------------------------------------------------*
* Start newscreen *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM =PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insertfield *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
* IF FVAL<> NODATA.
CLEAR BDCDATA..
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
* ENDIF.
ENDFORM. "BDC_FIELD
*perform close_group.
*perform close_dataset using dataset.
*&---------------------------------------------------------------------*
*& Form get_recordhead
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_recordhead .
SHIFTP_EINDT BY 3 PLACES LEFT.
SHIFTP_WERKS BY 3 PLACES LEFT.
*@@ SHIFTP_LGORT BY 3 PLACES LEFT.
SHIFT P_WERKS2 BY 3 PLACESLEFT.
*供应商需要从输入P_WERKS2到供应商表中查询
SELECT SINGLE LIFNR
INTO(recordhead-LIFNR_001)
FROM LFA1
WHERE LFA1~WERKS =P_WERKS2.
if recordhead-LIFNR_001 isinitial .
recordhead-LIFNR_001 ='P1800' .
endif.
recordhead-BSART_002 ='ZEB'.
recordhead-BEDAT_003 = sy-datum.
recordhead-EKORG_004 = '2000'.
recordhead-EKGRP_005 = 'F01'.
recordhead-EEIND_006 = P_EINDT.
recordhead-LPEIN_007 = 'T'.
recordhead-WERKS_008 = P_WERKS.
recordhead-LGORT_009 =''."@@去掉P_LGORT .
ENDFORM. "get_recordhead
*&---------------------------------------------------------------------*
*& Form get_record
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_record .
SHIFT P_BDTER BY 3 PLACESLEFT.
DATA:SOBSL LIKEMARC-SOBSL.
DATA: SFPS(1).
*@@(11)发货工厂的特殊采购类
DATA: FHGC(4),TSCGL(2).
*SHIFT P_WERKS2 BY 3 PLACESLEFT.
FHGC = P_WERKS2.
CONDENSE FHGC.
*-----------------modify by hurd------
case FHGC.
when '1910'.
TSCGL= '61'.
when '1920'.
TSCGL= '62'.
when '2100'.
TSCGL= '63'.
when '3100'.
TSCGL= '65'.
when '1800'.
TSCGL= '66'.
when '1200'.
TSCGL= '67'.
when '1100'.
TSCGL= '68'.
when '5100'.
TSCGL= '81'.
endcase.
*-------------------------------------
* IF FHGC= '1910'.
* TSCGL= '61'.
* ENDIF.
* IF FHGC = '1920'.
* TSCGL= '62'.
* ENDIF .
* IF FHGC= '2100'.
* TSCGL= '63'.
* ENDIF .
* IF FHGC= '3100'.
* TSCGL= '65'.
* ENDIF .
* IF FHGC= '1800'.
* TSCGL= '66'.
* ENDIF .
* IF FHGC= '1200'.
* TSCGL= '67'.
* ENDIF.
* IF FHGC= '1100'.
* TSCGL= '68'.
* ENDIF.
* IF FHGC= '5100'.
* TSCGL= '81'.
* ENDIF.
DATA: isappend(1),
appendcountstype i.
appendcounts = 0.
* SELECT RSNUMRSPOS MATNR BDMNG BDTER WERKS LGORT SORTF AUFNR AUFPL APLZL FROMRESB
* INTO(record-RSNUM,record-RSPOS,record-MATNR,record-BDMNG,record-BDTER,
* record-WERKS,record-LGORT,SFPS,record-AUFNR,record-AUFPL,record-APLZL)
SELECT RSNUM
RSPOS
MATNR
WERKS
LGORT
BDMNG
BDTER
AUFNR
SORTF
AUFPL
APLZL
FROMRESB
INTO(record-RSNUM,record-RSPOS,record-MATNR,record-WERKS,record-LGORT,record-BDMNG,
record-BDTER,record-AUFNR,SFPS,record-AUFPL,record-APLZL) "modify by hurd for index
*UP TO P_SCSL ROWS"这里要用计数器
where XLOEK = ''"@@(1)删除标志
and KZEAR ='' "@@(2)发货完成标志
and DUMPS ='' "@@去除虚拟件
and BDART ='AR' "@@20061114修改预留类型:OrdRes
and WERKSIN P_WERKS "@@(3)收货工厂
and LGORTIN P_LGORT "@@(4) 收货线边库
and AUFNRin P_AUFNR "@@(5) 生产订单号
and BDTER<= P_BDTER "@@ (6) 需求日期,去生产订单找基本开始日期GSTRP
"@@(7)物料组在下面删掉
and MATNRin P_MATNR . "@@(8)物料号
isappend = 'Y'.
"@@@判断排序字段
* SELECT SINGLE SORTF FROMRESB INTO SFPS
* WHERE RSNUM = record-RSNUM and MATNR =record-MATNR.
IF P_PS = 'X'.
IF SFPS = 'N'.
isappend ='N'.
continue.
ENDIF.
ENDIF.
IF P_FPS = 'X'.
IF SFPS <>'N'.
isappend ='N'.
continue.
ENDIF.
ENDIF.
"@@@判断物料组
IF P_MATKL IS NOTinitial.
DATA: MATKL LIKE MARA-MATKL.
SELECT SINGLE MATKL FROM MARA
INTO MATKL
WHERE MATNR = record-MATNR.
IF MATKL NOTIN P_MATKL.
isappend ='N'.
continue.
ENDIF.
ENDIF.
"@@(9)收货工厂的特殊采购类
"@@061027:如果特殊采购类为空,则允许本工厂到本工厂
SELECT SINGLE SOBSL FROMMARC
INTO SOBSL
WHERE MATNR = record-MATNRand WERKS in P_WERKS.
IF SOBSL<> TSCGL .
IF SOBSL is not initial or P_WERKS<> P_WERKS2.
isappend ='N'.
continue.
ENDIF.
ENDIF.
DATA: FHCCDD(4).
DATA: BESKZ likemarc-beskz,
LGFSB likemarc-lgfsb,
LGPRO likemarc-LGPRO.
"@@(11)发货工厂的特殊采购类20070709常进强要求修改
SELECT SINGLE BESKZ LGFSBLGPRO FROM MARC
INTO (BESKZ,LGFSB,LGPRO)
WHERE MATNR = record-MATNRand WERKS = FHGC.
if BESKZ = 'F'.
FHCCDD = LGFSB.
elseif BESKZ = 'E'.
FHCCDD = LGPRO.
endif.
"@@(12)MARC-LGFSB IN'发货存储地点‘
IF P_LGFSB is notinitial.
IF FHCCDD NOT IN P_LGFSB.
isappend ='N'.
continue.
ENDIF.
ENDIF.
**在途量不在这里考虑,而是对选择的物料进行按库位汇总后,再考虑
**在这里获得工作中心。
DATA: PLNNR likeAFVC-PLNNR,
ARBID likeAFVC-ARBID,
ARBPL likeCRHD-ARBPL.
CLEAR PLNNR. CLEARARBID.CLEAR ARBPL.
* select single PLNNR fromcaufv
* into PLNNR
* where aufnr =record-aufnr.
select single ARBID fromafvc
into ARBID
where AUFPL = record-AUFPLand APLZL = record-APLZL.
select single arbpl fromcrhd
into ARBPL
where OBJID = ARBID and OBJTY= 'A'.
record-ARBPL = ARBPL.
IF isappend = 'N'.
continue.
ENDIF.
"最后的加入
IF isappend = 'Y'.
append record.
appendcounts = appendcounts + 1.
ENDIF.
clear record.
ENDSELECT.
if record[] is initial .
MESSAGE '没有查询到数据' TYPE'I'.
STOP.
endif.
clear record.
loop at record.
SELECT SINGLE MAKTX FROMMAKT
INTO record-MAKTX
WHERE MATNR = record-MATNR .
SELECT SINGLE LABST FROMMARD
INTO record-LABST
WHERE WERKS = record-WERKSand LGORT = record-LGORT
and MATNR =record-MATNR .
record-MENGE = record-BDMNG -record-LABST .
MODIFY record.
endloop.
SORT record BY RSNUMASCENDING.
IF record[] IS INITIAL.
MESSAGE '没有查询到数据' TYPE'I'.
* CALL TRANSACTION 'ZSCPSDD'USING bdcdata MODE pmode UPDATE umode
* MESSAGESINTO messtab.
STOP.
ENDIF.
ENDFORM. "get_record
*&---------------------------------------------------------------------*
*& Form output
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM output .
if sy-subrc <> 0. exit. endif.
performbdc_dynpro using 'SAPMM06E' '0100'.
performbdc_field using 'BDC_CURSOR'
'RM06E-LGORT'.
performbdc_field using 'BDC_OKCODE'
'=AB'.
performbdc_field using 'EKKO-LIFNR'
recordhead-LIFNR_001."供应商帐户号: P1800
performbdc_field using 'RM06E-BSART'
recordhead-BSART_002."订单类型(采购):ZEB
performbdc_field using 'RM06E-BEDAT'
recordhead-BEDAT_003."采购订单日期:sy-datum
performbdc_field using 'EKKO-EKORG'
recordhead-EKORG_004."采购组织:2000
performbdc_field using 'EKKO-EKGRP'
recordhead-EKGRP_005. "采购组:F01
performbdc_field using 'RM06E-EEIND'
recordhead-EEIND_006."交货日期:P_EINDT
performbdc_field using 'RM06E-LPEIN'
recordhead-LPEIN_007."交货日的类别:T
performbdc_field using 'RM06E-WERKS'
recordhead-WERKS_008."工厂:P_WERKS
*因交货地点多个,所以需要屏蔽掉,并在后面进行改动
performbdc_field using 'RM06E-LGORT'
recordhead-LGORT_009."库存地点:P_LGORT,实际为空
DATA: counts type i ,
tabcountstype i.
counts = 1 .
tabcounts = 0 .
Loop At sumrecord where chkid ='X'.
tabcounts = sy-tabix .
endloop.
DATA:countchar(4) ,
tabcountchar(4) ,
totalparam(20)type cVALUE 'EKPO-MENGE('.
tabcountchar = tabcounts.
condense tabcountchar.
if tabcounts <10 .
CONCATENATE totalparam '0'tabcountchar ')' INTO totalparam .
else .
CONCATENATEtotalparam tabcountchar ')' INTOtotalparam .
endif .
performbdc_dynpro using 'SAPMM06E' '0120'.
performbdc_field using 'BDC_CURSOR'
totalparam.
performbdc_field using 'BDC_OKCODE'
'=BU'.
DATA: param1(20) type c VALUE'EKPO-EMATN(',
param2(20)type c VALUE 'EKPO-MENGE(',
param3(30)type c VALUE 'EKPO-LGORT(',"@@增加仓库
data(13) typec VALUE ' '.
loop at sumrecord where chkid ='X'.
param1 = 'EKPO-EMATN('.
countchar = counts.
condense countchar.
if counts < 10.
CONCATENATE param1 '0' countchar ')' INTO param1.
else .
CONCATENATEparam1 countchar ')' INTO param1.
endif .
performbdc_field using param1
sumrecord-MATNR. "物料号码
counts = counts + 1 .
ENDLOOP.
counts = 1.
loop at sumrecord where chkid ='X'.
param2 = 'EKPO-MENGE('.
data = ' '.
countchar = counts.
condense countchar.
if counts < 10.
CONCATENATE param2 '0' countchar ')' INTO param2.
else .
CONCATENATEparam2 countchar ')' INTO param2.
endif .
data = sumrecord-MENGE.
performbdc_field using param2
data ."采购订单数量
counts = counts + 1 .
ENDLOOP.
counts = 1.
loop at sumrecord where chkid ='X'.
param3 = 'EKPO-LGORT('.
countchar = counts.
condense countchar.
if counts < 10.
CONCATENATE param3 '0' countchar ')' INTO param3.
else .
CONCATENATEparam3 countchar ')' INTO param3.
endif ..
performbdc_field using param3
sumrecord-LGORT . "采购订单数量
counts = counts + 1 .
ENDLOOP.
performbdc_dynpro using 'SAPLSPO1' '0300'.
performbdc_field using 'BDC_OKCODE'
'=YES'.
CALL TRANSACTION 'ME21' USINGbdcdata MODE pmode UPDATE umode
MESSAGESINTO messtab.
DATA issuccess(1) TYPE C.
issuccess = 'N'.
LOOP AT messtab.
issuccess =messtab-MSGTYP.
ENDLOOP.
if issuccess = 'S' .
perform wtodata.
endif.
SET SCREEN 0.
LEAVE SCREEN.
ENDFORM. "output
**&---------------------------------------------------------------------*
**& Form USER_COMMAND
**&---------------------------------------------------------------------*
** text
**----------------------------------------------------------------------*
** -->UCOMM text
** -->ENDFORM text
**----------------------------------------------------------------------*
*form USER_COMMAND .
* CASE sy-ucomm.
* WHEN 'GEN'.
* perform bapioutput.
* ENDCASE.
*ENDFORM . "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form wtodata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM wtodata .
DATA: indatalike ZSCPSDD.
loop at selrecord .
indata-RSNUM =selrecord-RSNUM .
indata-MATNR =selrecord-MATNR .
modify ZSCPSDD fromindata.
* append indata.
* clear indata.
endloop.
* insert into ZSCPSDD
* from TABLEindata.
ENDFORM. "wtodata
*&------------------------------------------------------------*
*& Form displaying
*&------------------------------------------------------------*
* text
*-------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*-------------------------------------------------------------*
FORM displaying.
TYPE-POOLS slis.
DATA: ws_fieldcat TYPEslis_t_fieldcat_alv WITH HEADER LINE,
ws_fieldgroups_tabTYPE slis_t_sp_group_alv,
ws_layout TYPEslis_layout_alv,
ws_sortfields_tab TYPEslis_t_sortinfo_alv WITH HEADER LINE,
ws_events TYPEslis_t_event.
DATA: v_repid LIKEsy-repid.
DATA: nn TYPE i VALUE 0.
DATA: title TYPElvc_title.
SORT sumrecord BY matnr .
DEFINE hout.
nn = nn + 1.
ws_fieldcat-tabname ='SUMRECORD'.
ws_fieldcat-fieldname ='&1'.
ws_fieldcat-seltext_m= &2.
ws_fieldcat-col_pos = nn.
ws_fieldcat-outputlen= &3.
* ws_fieldcat-datatype ='&4'.
ws_fieldcat-do_sum ='&4'.
ws_fieldcat-lzero = 'X'.
append ws_fieldcat.
clear ws_fieldcat.
END-OF-DEFINITION.
* hout ebeln '配送单号' 10 char''.
* hout ebelp '项目' 10 char''.
hout matnr '物料号' 18 ''.
hout maktx '物料描述' 40 ''.
hout EEIND '交货日期' 8 ''.
* hout werks '收货工厂' 08 char''.
hout lgort '交货地点' 06 ''.
hout arbpl '工作中心' 8 ''.
hout BDMNG '需求量' 13''.
hout LABST '库存量'13 ''.
hout ZTKCL '在途量'13 ''.
hout menge '配送数量'13 ''.
* hout KONNR '框架协议' 18char ''.
* hout wamng '已配送量' 18 quan''.
* hout chayi '配送差额' 18 quan''.
* hout labst '现有库存' 18 quan''.
* hout insme '在检库存' 18 quan''.
* houtprueflos '检验批号' 18 char''.
* hout vbeln '交货单号' 18 char''.
* hout jyp_sl '进货数量' 18 quan''.
* hout jjfx_sl '紧急放行数量' 18quan ''.
* hout mblnr '物料凭证编号' 12char ''.
* hout zflag1 '已检验收货' 10char ''.
* hout zflag2 '已发货过账' 10char ''.
*
MOVE '生成转储拣配单' TO title.
ws_layout-zebra ='X'.
ws_layout-get_selinfos = ''.
ws_layout-colwidth_optimize ='X'.
ws_layout-detail_popup = 'X'.
ws_layout-no_keyfix = 'X'.
* WS_layout-colwidth_optimize ='X'.
* WS_LAYOUT-totals_before_items= 'X'.
ws_layout-box_fieldname ='CHKID'.
v_repid = sy-repid.
CALL FUNCTION'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program =v_repid
i_callback_pf_status_set = 'MENU_SET'
i_callback_user_command ='EXECUTE_COMMAND'
is_layout =ws_layout
it_fieldcat =ws_fieldcat[]
it_special_groups =ws_fieldgroups_tab[]
it_sort =ws_sortfields_tab[]
it_events =ws_events[]
i_grid_title =title
TABLES
t_outtab =sumrecord
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. "displaying
*&---------------------------------------------------------------------*
*& Form menu_set
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM menu_set USING rt_extab TYPE slis_t_extab..
SET PF-STATUS 'SCPSDD001'.
ENDFORM. "menu_set
*&---------------------------------------------------------------------*
*& Form execute_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM execute_command USING r_ucomm LIKE sy-ucomm
rs_selfieldTYPE slis_selfield.
CASE r_ucomm.
WHEN 'GEN'.
* perform output.
* clear msg .
perform bapioutput.
* MESSAGE msg type 'I'."msgtype .
when'&IC1'.
if not rs_selfield-value is initial.
casers_selfield-fieldname.
when'MATNR' OR 'MAKTX' OR 'EEIND' OR'LGORT' OR 'ARBPL' OR 'BDMNG' OR 'LABST' OR 'ZTKCL' OR'MENGE'.
clearmdezx.
refreshmdezx.
clearmdpsx.
refreshmdpsx.
clear mdsux.
refreshmdsux.
READ TABLEsumrecord INDEX rs_selfield-tabindex INTO sumrecord_wa.
callfunction 'MD_STOCK_REQUIREMENTS_LIST_API'
EXPORTING
matnr =sumrecord_wa-matnr
werks =sumrecord_wa-werks
TABLES
mdpsx =mdpsx
mdezx =mdezx
mdsux =mdsux.
if sy-subrc<> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITHSY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
clearitab_mrp.
refreshitab_mrp.
LOOP ATrecord where matnr = sumrecord_wa-matnr and werks =sumrecord_wa-werks and lgort = sumrecord_wa-lgort.
itab_mrp-RSNUM = record-RSNUM .
itab_mrp-RSPOS = record-RSPOS .
itab_mrp-MATNR = record-MATNR .
itab_mrp-MAKTX = record-MAKTX .
itab_mrp-BDMNG = record-BDMNG .
itab_mrp-BDTER = record-BDTER .
itab_mrp-LABST = record-LABST .
itab_mrp-MENGE = record-MENGE .
itab_mrp-WERKS = record-WERKS .
itab_mrp-LGORT = record-LGORT .
itab_mrp-AUFNR = record-AUFNR .
itab_mrp-GSTRP = record-GSTRP .
itab_mrp-ARBPL = record-ARBPL .
itab_mrp-AUFPL = record-AUFPL .
itab_mrp-APLZL = record-APLZL .
itab_mrp-DELB0 = 'OrdRes'.
* select singlePLNBEZ from afko
* intoitab_mrp-PLNBEZ
* where AUFNR =itab_mrp-AUFNR.
loop at mdpsxinto wa_mdpsx where DELKZ = 'AR' and DAT00 = itab_mrp-BDTER andMNG01 = itab_mrp-BDMNG
and DEL12 =itab_mrp-AUFNR.
itab_mrp-PLNBEZ =wa_mdpsx-BAUGR.
ENDLOOP.
ifitab_mrp-PLNBEZ is initial.
itab_mrp-PLNBEZ = itab_mrp-aufnr.
endif.
appenditab_mrp.
ENDLOOP.
LOOP AT ITAB_MRP(物料需求计划).
select singlePLNBEZ from afko
intoitab_mrp-matnr
where aufnr =itab_mrp-aufnr.
select singlemaktx from makt
intoitab_mrp-maktx
where matnr =itab_mrp-matnr.
modifyitab_mrp.
ENDLOOP.
performdisplaying2.
endcase.
endif.
ENDCASE.
ENDFORM. "execute_command
*&---------------------------------------------------------------------*
*& Form bapioutput
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM bapioutput .
DATA: begin of artab occurs0,
arbpl likecrhd-arbpl,
END OFartab.
LOOP AT sumrecord where CHKID ='X'.
artab-arbpl =sumrecord-arbpl.
append artab.
ENDLOOP.
sort artab by arbpl.
delete adjacent duplicates fromartab.
LOOP AT artab.
clear itab_poheader.
clear itab_poheader[].
clear itab_poheaderx.
clear itab_poheaderx[].
clear itab_poitems.
clear itab_poitems[].
clear itab_poitemx.
clear itab_poitemx[].
clear itab_itemsche.
clear itab_itemsche[].
clear itab_itemschex.
clear itab_itemschex[].
itab_poheader-doc_date= sy-datum."P_EINDT."recordhead-EKORG_004."P_EINDT."P_BDTER."sy-datum.
itab_poheader-creat_date =sy-datum.
itab_poheader-doc_type =recordhead-BSART_002."'ZDB'."ZDB
* itab_poheader-comp_code =BUKRS."'1001'.
* itab_poheader-comp_code =bukrs."1001三一重工
itab_poheader-purch_org =recordhead-EKORG_004."'1100'."采购组织
itab_poheader-pur_group =recordhead-EKGRP_005."'F01'."采购组
itab_poheader-vendor =recordhead-LIFNR_001."P_LIFNR ."供应商帐户号
* itab_poheader-currency ='RMB'.
* itab_itemsche-
APPEND itab_poheader.
itab_poheaderx-doc_date ='X'.
itab_poheaderx-doc_type ='X'.
* itab_poheaderx-comp_code ='X'.
itab_poheaderx-creat_date ='X'.
itab_poheaderx-vendor ='X'.
itab_poheaderx-purch_org ='X'.
itab_poheaderx-pur_group ='X'.
* itab_poheaderx-currency ='X'.
APPEND itab_poheaderx.
*****LOOP
DATA: po_item(5) typeN,
ps_item(4)type N.
po_item = '10' .
ps_item = '1'.
LOOP AT sumrecord where CHKID= 'X' and arbpl = artab-arbpl.
itab_poitems-po_item = po_item.
itab_poitems-material = sumrecord-MATNR.
itab_poitems-stge_loc = sumrecord-LGORT.
* itab_poitems-gr_to_date =sy-datum.
itab_poitems-plant = sumrecord-WERKS.
itab_poitems-quantity = sumrecord-MENGE.
* itab_poitems-agreement =sumrecord-KONNR.
* itab_poitems-agmt_item =sumrecord-KTPNR .
itab_poitems-tax_code = 'J1'. "J1税码
itab_poitems-trackingno = sumrecord-ARBPL.
APPEND itab_poitems.
itab_poitemx-po_item = po_item.
itab_poitemx-material = 'X'.
itab_poitemx-quantity = 'X'.
itab_poitemx-gr_to_date = 'X'.
itab_poitemx-plant = 'X'.
itab_poitemx-stge_loc = 'X'.
itab_poitemx-tax_code = 'X'.
* itab_poitemx-agreement='X'.
* itab_poitemx-agmt_item='X'.
itab_poitemx-trackingno = 'X'.
APPEND itab_poitemx.
itab_itemsche-PO_ITEM = po_item.
itab_itemsche-SCHED_LINE = ps_item.
* itab_itemsche-DEL_DATCAT_EXT ='1'.
itab_itemsche-DELIVERY_DATE =P_EINDT."P_EINDT."P_BDTER."sy-datum.
itab_itemsche-QUANTITY = sumrecord-MENGE.
APPEND itab_itemsche.
itab_itemschex-PO_ITEM = po_item.
itab_itemschex-SCHED_LINE = ps_item.
itab_itemschex-PO_ITEMX = 'X'.
itab_itemschex-SCHED_LINEX = 'X'.
* itab_itemschex-DEL_DATCAT_EXT= 'X'.
itab_itemschex-DELIVERY_DATE = 'X'.
APPEND itab_itemschex.
po_item = po_item + 10 .
ps_item = ps_item + 1.
ENDLOOP.
perform create_po.
ENDLOOP.
IF instab[] is notinitial.
insert zdscdd FROMTABLE instab .
commit work.
clear instab[].
ENDIF.
ENDFORM. "bapioutput
*&---------------------------------------------------------------------*
*& Form create_po
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_po .
CALL FUNCTION'BAPI_PO_CREATE1'
EXPORTING
poheader =itab_poheader
poheaderx =itab_poheaderx
TABLES
return =return
poitem =itab_poitems
poitemx =itab_poitemx
POSCHEDULE =itab_itemsche
poschedulex = itab_itemschex.
CALL FUNCTION'BAPI_TRANSACTION_COMMIT'.
* msgtype = 'S'.
Loop at return where type = 'S'or type = 'E'.
* msgtab-msg =return-message.
concatenate return-messagereturn-MESSAGE_V1 return-MESSAGE_V2 return-MESSAGE_V3return-MESSAGE_V4 into msgtab-msg.
msgtab-msgtype =return-type.
message msgtab-msg type 'I'."return-type.
IF return-type = 'S' andreturn-ID = '06' and return-Number = '017'.
instab-ebeln = return-MESSAGE_V2.
instab-werks = P_WERKS.
instab-AEDAT = sy-datum.
append instab.
ENDIF.
ENDLOOP.
* IF msgtype = 'S'.
* delete sumrecord where CHKID= 'X'.
* ENDIF.
ENDFORM. "create_po
*&---------------------------------------------------------------------*
*& Form write_zlog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM write_zlog .
data:wa_zlog type zlog.
wa_zlog-zdate = sy-datum.
wa_zlog-ztime = sy-uzeit.
wa_zlog-USERNAME =sy-uname.
wa_zlog-TCODE = sy-tcode.
wa_zlog-PGMNA = sy-repid.
insert into zlog valueswa_zlog.
ENDFORM. "write_zlog
*&------------------------------------------------------------*
*& Form displaying2
*&------------------------------------------------------------*
* text
*-------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*-------------------------------------------------------------*
FORM displaying2.
TYPE-POOLS slis.
DATA: ws_fieldcat TYPEslis_t_fieldcat_alv WITH HEADER LINE,
ws_fieldgroups_tabTYPE slis_t_sp_group_alv,
ws_layout TYPEslis_layout_alv,
ws_sortfields_tab TYPEslis_t_sortinfo_alv WITH HEADER LINE,
ws_events TYPEslis_t_event.
DATA: v_repid LIKEsy-repid.
DATA: nn TYPE i VALUE 0.
DATA: title TYPElvc_title.
DEFINE hout.
nn = nn + 1.
ws_fieldcat-tabname ='ITAB_MRP(物料需求计划)'.
ws_fieldcat-fieldname ='&1'.
ws_fieldcat-seltext_m= &2.
ws_fieldcat-col_pos = nn.
ws_fieldcat-outputlen= &3.
* ws_fieldcat-datatype ='&4'.
ws_fieldcat-do_sum ='&4'.
ws_fieldcat-lzero = 'X'.
append ws_fieldcat.
clear ws_fieldcat.
END-OF-DEFINITION.
hout BDTER '订单需求日期' 8 ''.
hout AUFNR '订单号' 12 ''.
hout MATNR '订单物料' 18 ''.
hout MAKTX '订单物料描述' 40 ''.
hout DELB0 'MRP(物料需求计划)元素' 6 ''.
hout PLNBEZ 'MRP(物料需求计划)元素数据' 18 ''.
hout BDMNG '需求数量'13 ''.
hout LGORT '交货地点' 4''.
hout ARBPL '工作中心'13 ''.
MOVE 'MRP(物料需求计划)元素' TOtitle.
ws_layout-zebra ='X'.
ws_layout-get_selinfos = ''.
ws_layout-colwidth_optimize ='X'.
ws_layout-detail_popup = 'X'.
ws_layout-no_keyfix = 'X'.
* WS_layout-colwidth_optimize ='X'.
* WS_LAYOUT-totals_before_items= 'X'.
* ws_layout-box_fieldname ='CHKID'.
v_repid = sy-repid.
CALL FUNCTION'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program =v_repid
i_callback_pf_status_set = 'MENU_SET'
i_callback_user_command ='EXECUTE_COMMAND'
is_layout =ws_layout
it_fieldcat =ws_fieldcat[]
it_special_groups =ws_fieldgroups_tab[]
it_sort =ws_sortfields_tab[]
it_events =ws_events[]
i_grid_title =title
TABLES
t_outtab =ITAB_MRP(物料需求计划)
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. "displaying2
生成转储拣配单的ABAP程序相关推荐
- ABAP动态生成经典应用之Dynamic SQL Excute 程序
开发说明:在SAP的系统维护过程中,有时我们需要修改一些Table中的数据,可是很多Table又不能直接在Tcode:SE16中修改,使用的SAP ID又没有调试数据修改权限,这时我们应该怎么样修改数 ...
- ABAP动态生成经典应用之Table数据Upload 程序
开发说明:在CBO的程序开发过程中,需要为Table准备大量的测试数据,手动录入效率低,不专业,我们可以采用其他的高级编辑工具(例如:EXCEL,EditPlus)按照Table数据存储结构准备好数据 ...
- 生成SLUTION MANAGER KEY 的ABAP程序
相装ECC5.6的朋友,不用担心SLUTION MANAGER KEY 的问题了,下面的ABAP程序可以帮你生成,ECC6测试通过 *&-------------------------- ...
- SAP ABAP 使用BAPI对交货单拣配,发货过账WS_DELIVERY_UPDATE,BAPI_OUTB_DELIVERY_CONFIRM_DEC
拣配 :WS_DELIVERY_UPDATE 发货过账:BAPI_OUTB_DELIVERY_CONFIRM_DEC,过账后无法使用VL09冲销,冲销时报错,分散系统无法冲销.解决方法是BAPI过账后 ...
- SAP SD VL02N 交货单拣配数量 WS_DELIVERY_UPDATE 交货单过账 BAPI_OUTB_DELIVERY_CONFIRM_DEC
本人诚心接ABAP远程开发任务,价格公道,有需要的联系我,欢迎个人,甲方爸爸,乙方私信联系. SD VL02N时如果要交货过账,之前需要先拣配数量.操作就是前台输入一个拣配数量,然后保存 代码如下 D ...
- 如何在单页应用程序Angular 7中使用FastReport Core Web报表
2019独角兽企业重金招聘Python工程师标准>>> 下载FastReport.Net最新版本 单页应用程序的概念正在寻找越来越多的支持者.最着名的单页框架之一是Angular,它 ...
- ABAP程序中的七大危险漏洞
概述 SAP的企业资源规划(ERP)系统已成为企业各项关键业务:财务管理.薪资管理.人力资源管理.供应链管理.客户关系管理等的基础平台.然而,在每个SAP的安装实施过程中,都会基于客户的需求进行不同程 ...
- 打造史上最小尺寸.Net Core单文件应用程序
.Net Core支持将应用程序发布成单文件进行部署和分发. 以下示例将Windows应用作为独立的单文件应用程序发布: dotnet publish -r win-x64 -c Release /p ...
- 通过Blazor使用C#开发SPA单页面应用程序(4) - Ant Design
通过Blazor使用C#开发SPA单页面应用程序(1) 通过Blazor使用C#开发SPA单页面应用程序(2) 通过Blazor使用C#开发SPA单页面应用程序(3) 前面学习了Blazor的特点.环 ...
最新文章
- SpringMVC工作原理
- 解决fragment replace 重叠现象
- apache文件服务器加权限,apache2运行权限设置
- javafx阴影_JavaFX技巧23:节省内存! 属性的阴影场
- android已经点击,【已解决】android中点击其他的(如Button等)但是EditText却没有失去焦点...
- bzoj 3356: [Usaco2004 Jan]禁闭围栏(扫描线+树状数组)
- 应广单片机(MCU单片机科普)
- 史上最全的 iOS测试工具集锦(自动化、性能)
- Unity 苹果内购
- 网吧带宽很大,为什么三层更新下载游戏很慢?
- 进阶HTML--认识标签嵌套与并列关系 -----16岁的小前端
- PDF文件怎么转图片格式?转换有技巧
- 剑指 Offer 58 - II. 左旋转字符串
- 写正则好用的测试工具
- 2023年电工杯数学建模竞赛AB题思路代码论文资料汇总贴
- socket编程之 accept函数的理解
- 常用向量空间距离计算的几种方法
- python的多线程使用setDaemon有什么意义?
- django分页(Paginator)
- secureFX上传中文文件名乱码