report ZE_MM_SCPSDD

    no standard page heading line-size 150.
*---------------------------生成转储拣配单的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程序相关推荐

  1. ABAP动态生成经典应用之Dynamic SQL Excute 程序

    开发说明:在SAP的系统维护过程中,有时我们需要修改一些Table中的数据,可是很多Table又不能直接在Tcode:SE16中修改,使用的SAP ID又没有调试数据修改权限,这时我们应该怎么样修改数 ...

  2. ABAP动态生成经典应用之Table数据Upload 程序

    开发说明:在CBO的程序开发过程中,需要为Table准备大量的测试数据,手动录入效率低,不专业,我们可以采用其他的高级编辑工具(例如:EXCEL,EditPlus)按照Table数据存储结构准备好数据 ...

  3. 生成SLUTION MANAGER KEY 的ABAP程序

    相装ECC5.6的朋友,不用担心SLUTION MANAGER KEY   的问题了,下面的ABAP程序可以帮你生成,ECC6测试通过 *&-------------------------- ...

  4. SAP ABAP 使用BAPI对交货单拣配,发货过账WS_DELIVERY_UPDATE,BAPI_OUTB_DELIVERY_CONFIRM_DEC

    拣配 :WS_DELIVERY_UPDATE 发货过账:BAPI_OUTB_DELIVERY_CONFIRM_DEC,过账后无法使用VL09冲销,冲销时报错,分散系统无法冲销.解决方法是BAPI过账后 ...

  5. SAP SD VL02N 交货单拣配数量 WS_DELIVERY_UPDATE 交货单过账 BAPI_OUTB_DELIVERY_CONFIRM_DEC

    本人诚心接ABAP远程开发任务,价格公道,有需要的联系我,欢迎个人,甲方爸爸,乙方私信联系. SD VL02N时如果要交货过账,之前需要先拣配数量.操作就是前台输入一个拣配数量,然后保存 代码如下 D ...

  6. 如何在单页应用程序Angular 7中使用FastReport Core Web报表

    2019独角兽企业重金招聘Python工程师标准>>> 下载FastReport.Net最新版本 单页应用程序的概念正在寻找越来越多的支持者.最着名的单页框架之一是Angular,它 ...

  7. ABAP程序中的七大危险漏洞

    概述 SAP的企业资源规划(ERP)系统已成为企业各项关键业务:财务管理.薪资管理.人力资源管理.供应链管理.客户关系管理等的基础平台.然而,在每个SAP的安装实施过程中,都会基于客户的需求进行不同程 ...

  8. 打造史上最小尺寸.Net Core单文件应用程序

    .Net Core支持将应用程序发布成单文件进行部署和分发. 以下示例将Windows应用作为独立的单文件应用程序发布: dotnet publish -r win-x64 -c Release /p ...

  9. 通过Blazor使用C#开发SPA单页面应用程序(4) - Ant Design

    通过Blazor使用C#开发SPA单页面应用程序(1) 通过Blazor使用C#开发SPA单页面应用程序(2) 通过Blazor使用C#开发SPA单页面应用程序(3) 前面学习了Blazor的特点.环 ...

最新文章

  1. SpringMVC工作原理
  2. 解决fragment replace 重叠现象
  3. apache文件服务器加权限,apache2运行权限设置
  4. javafx阴影_JavaFX技巧23:节省内存! 属性的阴影场
  5. android已经点击,【已解决】android中点击其他的(如Button等)但是EditText却没有失去焦点...
  6. bzoj 3356: [Usaco2004 Jan]禁闭围栏(扫描线+树状数组)
  7. 应广单片机(MCU单片机科普)
  8. 史上最全的 iOS测试工具集锦(自动化、性能)
  9. Unity 苹果内购
  10. 网吧带宽很大,为什么三层更新下载游戏很慢?
  11. 进阶HTML--认识标签嵌套与并列关系 -----16岁的小前端
  12. PDF文件怎么转图片格式?转换有技巧
  13. 剑指 Offer 58 - II. 左旋转字符串
  14. 写正则好用的测试工具
  15. 2023年电工杯数学建模竞赛AB题思路代码论文资料汇总贴
  16. socket编程之 accept函数的理解
  17. 常用向量空间距离计算的几种方法
  18. python的多线程使用setDaemon有什么意义?
  19. django分页(Paginator)
  20. secureFX上传中文文件名乱码

热门文章

  1. 1.2.1bat脚本命令 DIR 显示磁盘目录与重定向符号 通配符
  2. LTP--linux稳定性测试 linux性能测试 ltp压力测试
  3. mysql集群mysql-cluster安装
  4. JAVA模拟HTTP post请求上传图片
  5. openstack下
  6. Mysql之一:mysqldump和LVM逻辑卷快照
  7. 在别人那看到的很不错的ext.net的基本讲解
  8. 项目杂记——在后台获取Repeater控件里面的控件
  9. 关于控件Visible属性的说明
  10. 小程序获取form_id 与 小程序获取openid