SAP的BOM删除和维护

上一篇 / 下一篇  2008-06-04 20:22:11 / 个人分类:ABAP BAPI

转自:SAP BLOG--Jack Wu

http://blog.csdn.net/CompassButton/archive/2006/09/12/1215203.aspx

1、删除BOM函数ITPUB个人空间 cgG'@ O9Q'i2jO,~
 CSAP_MAT_BOM_DELETE

2、删除BOM(DELETE)方法
+X'MY7ah+Q&^$`0参见sap的标准程序RCBOMDEL

3、BOM新增函数ITPUB个人空间m!x2t'J8rb|
BAPI_MATERIAL_BOM_GROUP_CREATE
|%?w!{)i NR0*&---------------------------------------------------------------------*
q5X$nq Rf\:S5w0*& Report  ZTS_I_COPY_COSTBOMITPUB个人空间$B/_{*Uy(P!?k'd
*&ITPUB个人空间i5K.?R&G)g
*&---------------------------------------------------------------------*ITPUB个人空间J Bo$N B,K7p @
*&
{+g*m4kt A'B"t0*&
8O.P:ZW'N"m:g0*&---------------------------------------------------------------------*

REPORT  ZTS_I_COPY_COSTBOM.

TABLES: MAST,MARA,MARC,STKO,STPO,AFKO,AFPO,RESB,T100.

DATA: BEGIN OF IT_TAB OCCURS 0,ITPUB个人空间'[*P'wP&^QFE3t#w
        AUFNR LIKE AFKO-AUFNR,ITPUB个人空间.y(W3\ y8o"A&V
        GSTRI LIKE AFKO-GSTRI,
%W]2ilf}0        GSUZI LIKE AFKO-GSUZI,
\4Je xi0        RSNUM LIKE AFKO-RSNUM,
c7lF#C3r9D4E0        GAMNG LIKE AFKO-GAMNG,
F \ XKJKON?0        MATNR LIKE AFPO-MATNR,
B"^0{1T `(N0        WERKS LIKE AUFK-WERKS,
c'^w oH0        OBJNR LIKE AUFK-OBJNR,ITPUB个人空间;axc ?RB
      END OF IT_TAB.

DATA: BEGIN OF IT_SORT OCCURS 0,ITPUB个人空间}D |m5Mx"X@
        GSTRI LIKE AFKO-GSTRI,ITPUB个人空间 l-o Ca$]u GI
        GSUZI LIKE AFKO-GSUZI,
v+A#M.YO0        AUFNR LIKE AFKO-AUFNR,
7U o)jk4q-gG:d @0        RSNUM LIKE AFKO-RSNUM,
+^HF0o;I0        GAMNG LIKE AFKO-GAMNG,
]W/wA#S6x"qV0        MATNR LIKE AFPO-MATNR,ITPUB个人空间([2W d T(i:p!m
        WERKS LIKE AUFK-WERKS,
8P$s-^ joX{I0        OBJNR LIKE AUFK-OBJNR,ITPUB个人空间 fyr4j_
      END OF IT_SORT.

DATA: BEGIN OF IT_TAB2 OCCURS 0,
0z&o,`)}xXz+GaY+`0        AUFNR LIKE AFKO-AUFNR,
JaY0Y H W+k|E0        RSNUM LIKE AFKO-RSNUM,ITPUB个人空间k5B#O s|wY~/m
        MATNR LIKE MARA-MATNR,ITPUB个人空间)p R3m6[3Ym
        WERKS LIKE MARC-WERKS,
S {rKt.F0        GAMNG LIKE AFKO-GAMNG,
0G#z!LN6oIf w;ev"r0        FLAG(1),ITPUB个人空间O S K,_Z+|U#pLot
        MSG(100),ITPUB个人空间-]J\+U^4K9| t-{i
      END OF IT_TAB2.

DATA: BEGIN OF IT_ITEM OCCURS 0 ,ITPUB个人空间N7U2`Npi
        RSNUM LIKE AFKO-RSNUM,
0LPcW%]K?0        MATNR LIKE RESB-MATNR,
\c]8O9l"?G7Q0        BDMNG LIKE RESB-BDMNG,
'm9M+zm7TQ/Kw0        MEINS LIKE RESB-MEINS,ITPUB个人空间&kK TE6fQ1[OXF
        POSTP LIKE RESB-POSTP,
4o g\u2h0        WERKS LIKE MARC-WERKS,ITPUB个人空间4`'CmN8z;y
        LVORM LIKE MARC-LVORM,ITPUB个人空间"Z(a5RI^
        MMSTA LIKE MARC-MMSTA,
4{{#_.F7d0        MSTAE LIKE MARA-MSTAE,
rNLsJ6w0      END OF IT_ITEM .

DATA: IT_ITEM2 LIKE IT_ITEM OCCURS 0 WITH HEADER LINE .ITPUB个人空间a{y/t8A
DATA: BEGIN OF IT_DEL OCCURS 0 ,ITPUB个人空间4~5bbS4Q H {}:`
        MATNR LIKE MARA-MATNR ,ITPUB个人空间aVg{1zt"fOp
        WERKS LIKE MARC-WERKS ,
e A5O6t5N3S0      END OF IT_DEL .

DATA: BEGIN OF ITAB_STKO OCCURS 0,
|]%H7oc0        STLNR LIKE STKO-STLNR,
8HcB us3lGg0        STLAL LIKE STKO-STLAL,
-B k4hP)DP4g0        STLST LIKE STKO-STLST,ITPUB个人空间.LC Y5[.Uie.K x
        LKENZ LIKE STKO-LKENZ,ITPUB个人空间o/si}M"_Q
        DATUV LIKE STKO-DATUV,ITPUB个人空间 }'To P3c
     END OF ITAB_STKO.ITPUB个人空间a&o J3p)S V:Qqc
* BDCDATA
$j3Cgt7m6TO b0DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.ITPUB个人空间q4Is p wP
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.ITPUB个人空间H_)K%ipHQ(I
* BAPI DATA STRUCTUREITPUB个人空间x-Q-[IH~+[
DATA: EX_HEADDATA       LIKE BAPIMATHEAD,ITPUB个人空间_N KiQ9[
      EX_PLANTDATA      LIKE BAPI_MARC,
:S"_#rVy0      EX_PLANTDATAX     LIKE BAPI_MARCX,ITPUB个人空间4TW0rcR d
      EX_CLIENTDATA     LIKE BAPI_MARA,ITPUB个人空间Pz/|:W]
      EX_CLIENTDATAX    LIKE BAPI_MARAX,
B;[]f0Uf[ s0      IM_RETURN         LIKE  BAPIRET2.

DATA: G_OK TYPE I,         "SUCCESSITPUB个人空间C#c#F#cg:F
      G_NO TYPE I.         "FAIL

SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME. TITLE TEXT-001.
5aYk4P)_5n0SELECT-OPTIONS: S_WERKS FOR MAST-WERKS OBLIGATORY NO INTERVALS.
v%H9zm2J#k0SELECT-OPTIONS: S_AUFNR FOR AFKO-AUFNR .
P)eGZa,W/K0SELECT-OPTIONS: S_MATNR FOR AFKO-PLNBEZ .ITPUB个人空间1oq2l+b:O/m
SELECT-OPTIONS: S_GSTRI FOR AFKO-GSTRI.ITPUB个人空间)^:QD#lnZ3d2K
SELECTION-SCREEN END OF BLOCK BLK1.

ITPUB个人空间x%} Zn{0x'~
*---------------------------------------------------------------------*
*ac%y${'G^ Z@]0*        INITIALIZATION                                               *ITPUB个人空间 }HK,g(bU
*---------------------------------------------------------------------*
{A G Q+E&i\9R8m0INITIALIZATION.

ITPUB个人空间7N6wq4@*XQcWAY
*---------------------------------------------------------------------*
|6{&HV#ElH0*        START-OF-SELECTION                                           *
/a'HS*q gk6Z0*---------------------------------------------------------------------*ITPUB个人空间2Jy tVi|
START-OF-SELECTION.ITPUB个人空间(l/aAgsaB
* 取需要拷贝的工单
.sa:yV!R%c0  PERFORM. FRM_GET_ORDER.
|4O puabeOp _:]M y0  IF NOT IT_DEL[] IS INITIAL.ITPUB个人空间 [M y Sg E-F&E
    PERFORM. FRM_DEL_COSTBOM.ITPUB个人空间A P"L%K6~ ?5b
  ENDIF.ITPUB个人空间eNH9X4_9_"G
  IF NOT IT_ITEM2[] IS INITIAL.
p \+V-i:B^R)V"Hu0    PERFORM. FRM_CHANGE_MAT_STATUS.ITPUB个人空间&u/Cc9Qxk;F
  ENDIF.ITPUB个人空间"_f6w:K4m
  PERFORM. FRM_COPY_COSTBOM.
|+draGbRcz0*  PERFORM. FRM_BAPI_CS01.
-Hx\7_FJ^9N7b0  IF NOT IT_ITEM2[] IS INITIAL.ITPUB个人空间pU Bzn
    PERFORM. FRM_RETURN_MAT_STATUS.
k']$g+bM8g0  ENDIF.
;F"i\.yDa_JZ$b(Ko0*---------------------------------------------------------------------*
F&iU4Ah ~#H0*        END-OF-SELECTION                                             *
LVS*hmm.wa$v/B0*---------------------------------------------------------------------*
F7W9LuI,J gQ0n0END-OF-SELECTION.ITPUB个人空间T6W yf+n\.I
* 输出记日志到屏幕ITPUB个人空间_7O CD?M(y:Z@HE
  PERFORM. FRM_WRITE_LOG.ITPUB个人空间.LJ WxL*q#C.a
*&---------------------------------------------------------------------*ITPUB个人空间wo8Q2lVW
*&      Form  FRM_GET_ORDER
4{4@x4^G6@K0*&---------------------------------------------------------------------*
;i8z+G(D$V V*v-zEg0*       text
T t.]&C0s5VT,]6{;P0*----------------------------------------------------------------------*
%|$E9^;vh |0*  -->  p1        textITPUB个人空间 Bfvs Bi-JT9|
*  <--  p2        textITPUB个人空间R,l6gNCr2x M@
*----------------------------------------------------------------------*
5w `#ba9F0FORM. FRM_GET_ORDER .
{(_Z$B vc\}&['xg r0  DATA: BEGIN OF IT_TEMP OCCURS 0,
!X"Du/i7Gw_0          MATNR LIKE MARA-MATNR ,
(BxH!OF$uFx0          WERKS LIKE MARC-WERKS ,ITPUB个人空间z,A0d|X)NT(e)?"c3`
        END OF IT_TEMP .ITPUB个人空间2?CjRF0h
  DATA: LV_KZKFG LIKE MARA-KZKFG . "可配置物料ITPUB个人空间[j:yW:K3m
  DATA: R_PAIS TYPE RANGE OF JEST-STAT,ITPUB个人空间Z0[GArV(H
        R_PAIS_STAT LIKE LINE OF R_PAIS.
IGz8mEd+Z0  DATA: R_PAIS2 TYPE RANGE OF JEST-STAT,ITPUB个人空间Z ~)rv(N
        R_PAIS2_STAT LIKE LINE OF R_PAIS2.ITPUB个人空间:eH tj#kt5Z2T
  DATA: R_PAIS3 TYPE RANGE OF AUFK-AUART,ITPUB个人空间1B%o^zWn$vB5K
        R_PAIS3_AUART LIKE LINE OF R_PAIS3.ITPUB个人空间/b,y+?){;Qi3HMr*A
  DATA: BEGIN OF GT_JEST OCCURS 0.
ZMj*sZ_c8E+i;E0  DATA: OBJNR LIKE JEST-OBJNR,
1pb!B[#I|$miq eK0        STAT  LIKE JEST-STAT,
z:^ a@;I2fEG {0a0        INACT LIKE JEST-INACT.ITPUB个人空间-Iwq%WG``3],|g |
  DATA END OF GT_JEST.
-ij-Tp-R$HC0  DATA: LV_LINE LIKE BSVX-STTXT .ITPUB个人空间Rvd*F3N-e9g
  DATA: LV_MSTAE LIKE MARA-MSTAE.
&q:]7F1Fv.A0  DATA: LV_LVORM LIKE MARA-LVORM.

*
I"h ex h9e8C$jc0** 工单状态range定义
3F2e4S:Tr#J&x0*  CLEAR: R_PAIS_STAT ,R_PAIS2_STAT  .ITPUB个人空间2e`8M d,b;n%I~
*  R_PAIS_STAT-SIGN   = 'I'.
1K+} H d5qbdy0}0*  R_PAIS_STAT-OPTION = 'EQ'.
:z:MS%| AT0*  R_PAIS_STAT-LOW    = 'I0012'.ITPUB个人空间$H|B P bt9V
*  APPEND R_PAIS_STAT TO R_PAIS.ITPUB个人空间(r'[o*OU\?s-v
*
y v)EvPW6_:z(R$q+]F.t#E0*  R_PAIS_STAT-SIGN   = 'I'.ITPUB个人空间s,`%dZD:@[
*  R_PAIS_STAT-OPTION = 'EQ'.ITPUB个人空间O-IX$Dg4]
*  R_PAIS_STAT-LOW    = 'I0321'.
6^j s1DL!@/u0*  APPEND R_PAIS_STAT TO R_PAIS.ITPUB个人空间_\1M@K{MF[U
*ITPUB个人空间)Z7~Om*MS
*  R_PAIS2_STAT-SIGN   = 'I'.ITPUB个人空间 N7c~T M?
*  R_PAIS2_STAT-OPTION = 'EQ'.ITPUB个人空间]+`2p:B7^Iyv
*  R_PAIS2_STAT-LOW    = 'I0074'.
Ce2W"w'A*vEf^0*  APPEND R_PAIS2_STAT TO R_PAIS2.ITPUB个人空间%g1u7Bh{1xR~
*
)i$}'f6v5T?:Q5y0*  R_PAIS2_STAT-SIGN   = 'I'.
0iwhpAR6F2UfX2v0*  R_PAIS2_STAT-OPTION = 'EQ'.
o HuV&Ukw0*  R_PAIS2_STAT-LOW    = 'I0321'.ITPUB个人空间:xPT+Y9d(X"qD
*  APPEND R_PAIS2_STAT TO R_PAIS2.
A/yoZf1?0* 工单类型定义ITPUB个人空间1kRx!h-P
  CLEAR R_PAIS3_AUART.
:^OzJxW5t2p'M0  R_PAIS3_AUART-SIGN   = 'I'.
-[/NW/r_R9ax p^0  R_PAIS3_AUART-OPTION = 'EQ'.
K]-@Dt.xo0  R_PAIS3_AUART-LOW    = 'PP01'.ITPUB个人空间0H$r P%O$[n
  APPEND R_PAIS3_AUART TO R_PAIS3.ITPUB个人空间Q)[JE.wu5b?
  R_PAIS3_AUART-SIGN   = 'I'.
1|A%wl6pJ-p Wx0  R_PAIS3_AUART-OPTION = 'EQ'.ITPUB个人空间2F|y%l;g'lYi)g
  R_PAIS3_AUART-LOW    = 'ZPP1'.
YB5j({m[0  APPEND R_PAIS3_AUART TO R_PAIS3.ITPUB个人空间Im5f9^,Eca V
  R_PAIS3_AUART-SIGN   = 'I'.ITPUB个人空间:~b1kq/b%Q
  R_PAIS3_AUART-OPTION = 'EQ'.ITPUB个人空间W+y'a_'UuZ
  R_PAIS3_AUART-LOW    = 'ZPP3'.
%z'm'@ j {vr0  APPEND R_PAIS3_AUART TO R_PAIS3.ITPUB个人空间BTC.n;by
  R_PAIS3_AUART-SIGN   = 'I'.ITPUB个人空间 \8NgW uqm
  R_PAIS3_AUART-OPTION = 'EQ'.
{ w-oAU#XX}&^nL0  R_PAIS3_AUART-LOW    = 'ZPP4'.
b J{Kz&G-v0  APPEND R_PAIS3_AUART TO R_PAIS3.
-W!ZM6byv+[)} p4o0  R_PAIS3_AUART-SIGN   = 'I'.ITPUB个人空间w8^1}p4K wey
  R_PAIS3_AUART-OPTION = 'EQ'.ITPUB个人空间*E$L[*J,T/cV0g
  R_PAIS3_AUART-LOW    = 'ZPP5'.
WS$z8oL]:w VF0  APPEND R_PAIS3_AUART TO R_PAIS3.


,GRr7F kj b4C0  SELECT A~AUFNR A~GSTRI A~GSUZI A~RSNUM A~GAMNG C~MATNR B~WERKS B~OBJNRITPUB个人空间T;J(M D6G C$E
    INTO CORRESPONDING FIELDS OF TABLE IT_TABITPUB个人空间xZ[)V!Q3n"C B
    FROM AFKO AS AITPUB个人空间0j*j5nJ+B
    INNER JOIN AUFK AS B ON A~AUFNR = B~AUFNRITPUB个人空间Q%T2K eW.L?4[)^
    INNER JOIN AFPO AS C ON A~AUFNR = C~AUFNR
!V5Xi*f4O-Cwx0*    INNER JOIN JEST AS C ON B~OBJNR = C~OBJNR
Xo/Lir K5W }0    WHERE A~AUFNR IN S_AUFNRITPUB个人空间#C$J_ri
      AND A~GSTRI IN S_GSTRI
0K1WeW(J,U3SLD0      AND C~MATNR IN S_MATNRITPUB个人空间%\)F9S O|
      AND B~WERKS IN S_WERKSITPUB个人空间X+L#ob&x8AO;wQz
      AND B~AUART IN R_PAIS3ITPUB个人空间"g\"@%k6Wr7db'pi
      AND B~LOEKZ NE 'X'.

  LOOP AT IT_TAB.ITPUB个人空间/hmaO8p2k0Fw
    CLEAR LV_LINE.ITPUB个人空间i3R`9\]
    CALL FUNCTION 'STATUS_TEXT_EDIT'ITPUB个人空间#P%Wt8JV9E6Pn#Oe
      EXPORTINGITPUB个人空间r!J"l2h tB
*   CLIENT                  = SY-MANDT
Pl p_IEFB0*   FLG_USER_STAT           = ' 'ITPUB个人空间DlVy^
        OBJNR                   = IT_TAB-OBJNRITPUB个人空间*}+c,ur'~e
        ONLY_ACTIVE             = 'X'
c1\F&LwCk["^0        SPRAS                   = '1'ITPUB个人空间c%]m}*J
*   BYPASS_BUFFER           = ' '
.NH9kB(Gc-d.L0     IMPORTING
2Vol!ta#_{_0*   ANW_STAT_EXISTING       =ITPUB个人空间1gKh9X)r(C,gs dd
*   E_STSMA                 =
)\}4S+Axh4`eo0       LINE                    =  LV_LINEITPUB个人空间`WM4p3N
*   USER_LINE               =
X8|'~w:i V#m l0*   STONR                   =ITPUB个人空间BGIz){ncw]
     EXCEPTIONS
$V0ovD8s4f _9Kh0       OBJECT_NOT_FOUND        = 1
R xLo/M XCM0       OTHERS                  = 2ITPUB个人空间pF;X lb3A
              .
ebU b-WWR&qw0    IF SY-SUBRC <> 0.ITPUB个人空间*I2IskK5~b6u
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOITPUB个人空间~ tz1@]4j$]
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    ELSE.ITPUB个人空间-`4[nfm:DHK
      IF ( LV_LINE CS 'DLV' AND LV_LINE CS 'GMPS' ) OR
_r4F0vhTL0         ( LV_LINE CS 'PDLV' AND LV_LINE CS 'GMPS' ).
Ta[(J{.zWF0        IT_TEMP-MATNR = IT_TAB-MATNR .
Edyk(gy5o0        IT_TEMP-WERKS = IT_TAB-WERKS .
)Q"W GD#nIu0b0        APPEND IT_TEMP.ITPUB个人空间)EBE L6T+a;z{O
        CLEAR : IT_TAB,IT_TEMP .ITPUB个人空间O0RvNEv*d
      ELSE.
\;EXwW!C w/m0        DELETE IT_TAB.
(Rg,JAEZz] p o0      ENDIF.
*vU2i3lOB3lhg0    ENDIF.

    CLEAR IT_TAB.ITPUB个人空间"KTsG:c
  ENDLOOP.

*  LOOP AT IT_TAB.ITPUB个人空间T4H@E#Ko%r`
*    IT_TEMP-MATNR = IT_TAB-PLNBEZ .ITPUB个人空间&b L%m c]3~
*    IT_TEMP-WERKS = IT_TAB-WERKS .
n?%dGg7t[*X3R3p0*    APPEND IT_TEMP.
B'C;dBfLe~)@0*    CLEAR : IT_TAB,IT_TEMP .ITPUB个人空间0T7W)e8wx4g6[&p
*  ENDLOOP.
l:]d9k s7jT'r0* 删除重复的bomITPUB个人空间7F5{;o~n
* 没有激活的无效BOMITPUB个人空间%~9fE[v'sL
*  DATA: LV_TIX LIKE SY-TABIX .
e{w,d'LL0  SORT IT_TEMP BY MATNR WERKS .ITPUB个人空间 Um.\5q6f6s#i%a
  DELETE ADJACENT DUPLICATES FROM IT_TEMP COMPARING MATNR WERKS.ITPUB个人空间Z8uA#@-yJ3\
*  LOOP AT IT_TEMP .
:{w"G4sS3? @KKD"w0*    LV_TIX = SY-TABIX.
[j8M4fc_)u0*    CLEAR ITAB_STKO.ITPUB个人空间6Zx\g;WL'pQ
*    REFRESH ITAB_STKO.
BhM(h&@`7?0*    CLEAR MAST.ITPUB个人空间k&WwsEo.Be&w!V
*    SELECT SINGLE * FROM MAST WHERE MATNR EQ IT_TEMP-MATNRITPUB个人空间)algp4a jL6p2W
*                                AND WERKS EQ IT_TEMP-WERKS.ITPUB个人空间M5U1SN9t4i6ck
*    IF SY-SUBRC EQ 0.ITPUB个人空间Y0|h#L8t] \+vs
*      SELECT STLNR STLAL STLST LKENZ DATUVITPUB个人空间,M'O&]0]I%{
*        FROM STKO
H#Y\f6I`Jsr0*        INTO CORRESPONDING FIELDS OF TABLE ITAB_STKOITPUB个人空间e!o4S V f8y]
*       WHERE STLNR = MAST-STLNR
Y? Nv5j:Im4` X0*         AND STLAL = MAST-STLAL
p4wj I/BW0*         AND DATUV <= SY-DATUM
"d+s?.WtBy/F.S0*        ORDER BY DATUV DESCENDING.ITPUB个人空间zc8V*g }
*
C Q*YS9h Z2a0*      READ TABLE ITAB_STKO INDEX 1.
;Mg O sJ8\ T EkE0*
|jg"a\!V7R2m4U0*      IF ITAB_STKO-STLST <> '01' OR ITAB_STKO-LKENZ <> SPACE.
Z0T)Z8D;o8_C0*        "BOM未激活或者已经删除
/f}(l rl;~0*        DELETE IT_TEMP INDEX LV_TIX.ITPUB个人空间;b~ Tt*IP%o3Tl\r
*      ENDIF.
;}l't S!@?*\0*    ENDIF.

*  ENDLOOP.
:gfsKx oe6|0* 可配置的bom不需要
+}n Z;k,f0@"ek0  LOOP AT IT_TEMP.
@ef}#U+\ F MoY0    SELECT SINGLE KZKFG MSTAE LVORM
5O8SE,S3HZ(G|0      INTO (LV_KZKFG,LV_MSTAE,LV_LVORM)ITPUB个人空间V/uEp$GX)G
      FROM MARAITPUB个人空间-|5lae I8g@/p.v0t
      WHERE MATNR EQ IT_TEMP-MATNR.ITPUB个人空间)p;N,gf5G"l
    IF LV_KZKFG EQ 'X' OR LV_MSTAE NE ' ' OR LV_LVORM NE ' '.
mJWE/X)i0      DELETE IT_TEMP .ITPUB个人空间 O'x w|!J V6Bb
    ELSE.
8[*xU#y)lE s0      SELECT SINGLE * FROM MAST WHERE WERKS EQ IT_TEMP-WERKS
*T@,e&^1^Gz0                                  AND MATNR EQ IT_TEMP-MATNRITPUB个人空间)Q1`0['Q C:f5GXUko
                                  AND STLAN EQ '6'.ITPUB个人空间u&x:V#J E DM.g
      IF SY-SUBRC EQ 0.ITPUB个人空间 syA(x rbG
        APPEND IT_TEMP TO IT_DEL.
1U9J!z p&s7S^+o0      ENDIF.ITPUB个人空间:w/{N)Y w
    ENDIF.
bU{ AZ7v^W0    CLEAR MARC.ITPUB个人空间:P{.R(B&~ z}k tH)q m
    SELECT SINGLE * FROM MARC WHERE MATNR EQ IT_TEMP-MATNR
O?$scf6_&a!ZT0                               AND WERKS EQ IT_TEMP-WERKS.ITPUB个人空间a} E0wU,GK3z\
    IF MARC-MMSTA NE ' ' OR MARC-LVORM NE ' '.
!aXALf W)v0      DELETE IT_TEMP .
rQK*}A(`k/Q1Ue0    ENDIF.

    CLEAR IT_TEMP.

  ENDLOOP.

  LOOP AT IT_TAB.
f/Uex B,_M7F0    MOVE-CORRESPONDING IT_TAB TO IT_SORT.
O^A4N1sS"?O;c0    APPEND IT_SORT.ITPUB个人空间 Ye7H,f l/\!`euJ R
    CLEAR: IT_TAB,IT_SORT.ITPUB个人空间*{-N(^7qgQv+T
  ENDLOOP.

  SORT IT_SORT BY GSTRI DESCENDING GSUZI DESCENDING .

  LOOP AT IT_TEMP.
x4YZ:?A2_o%i0    READ TABLE IT_SORT WITH KEY MATNR = IT_TEMP-MATNR
CGp$Xe/TnW ~0                                WERKS = IT_TEMP-WERKS.
I$cV~/]0    IF SY-SUBRC EQ 0.
#r#dy1KwPJ}0      IT_TAB2-AUFNR = IT_SORT-AUFNR .
8Y W$\;o3[0      IT_TAB2-RSNUM = IT_SORT-RSNUM .
zR2|:MzSW"fy/o0      IT_TAB2-MATNR = IT_SORT-MATNR.
9O;q6C} \1Cw0      IT_TAB2-WERKS = IT_SORT-WERKS .ITPUB个人空间sQ&ur&K/l
      IT_TAB2-GAMNG = IT_SORT-GAMNG .
M'I'c2ZOlV0      APPEND IT_TAB2.ITPUB个人空间} l&O8Tn
      CLEAR IT_TAB2.ITPUB个人空间iS`,IHlc
    ENDIF.ITPUB个人空间l[-zO"\k
    CLEAR:IT_SORT, IT_TEMP.
DL3}"SHakB\0  ENDLOOP.

  LOOP AT IT_TAB2.

    SELECT A~RSNUM A~MATNR A~BDMNG A~MEINS A~POSTP B~WERKS B~LVORM B~MMSTA C~MSTAEITPUB个人空间u+Z.rt~v
     APPENDING CORRESPONDING FIELDS OF TABLE IT_ITEM
_k0U6tJj"R0      FROM RESB AS AITPUB个人空间%x8HsgYR l:_:?0f g
      INNER JOIN MARC AS B ON A~MATNR = B~MATNRITPUB个人空间1D3I0?]F&Z
                          AND A~WERKS = B~WERKS
f;@$A J6U'fTY0      INNER JOIN MARA AS C ON A~MATNR = C~MATNR
4FDd v9Da0     WHERE A~RSNUM EQ IT_TAB2-RSNUMITPUB个人空间e2z9k$F*E?IJ A| s
       AND A~WERKS EQ IT_TAB2-WERKSITPUB个人空间"v G$D/g,{
       AND A~BDMNG NE ' '
\l(w0h5I? ]%K0       AND C~MTART NE 'LEER'.                               "剔除69
QPm-u2_I|mj0*       AND B~LVORM NE 'X'ITPUB个人空间n"nT&m6H}C$Nn
*       AND B~MMSTA EQ ' 'ITPUB个人空间3r%r KaLB5b
*       AND C~MSTAE EQ ' '.

    CLEAR IT_TAB2.ITPUB个人空间0xkHz,f TX
  ENDLOOP.

  LOOP AT IT_ITEM .ITPUB个人空间E0xD `jEn
    IF IT_ITEM-LVORM EQ 'X' OR IT_ITEM-MMSTA NE ' ' OR IT_ITEM-MSTAE NE ' '.ITPUB个人空间wJ%]9CP h
      APPEND IT_ITEM TO IT_ITEM2 .
#C#V%a'B0P-P1C.Z}G0    ENDIF.ITPUB个人空间.wc_b2v
    CLEAR IT_ITEM.ITPUB个人空间JIo0eu$C r
  ENDLOOP.

 


[(n_#w&SN.H;YVQ0ENDFORM.                    " FRM_GET_ORDERITPUB个人空间E.|qjb
*&---------------------------------------------------------------------*
.M k.u%LZ0*&      Form  FRM_COPY_COSTBOMITPUB个人空间5[X9\czA9^Z4rk(M
*&---------------------------------------------------------------------*ITPUB个人空间/b#F4^e;l
*       textITPUB个人空间*iZ&h3g:]&^'D2?N"{`
*----------------------------------------------------------------------*
M{ gU-VQ0*  -->  p1        text
Y1Q%e.c_,L d!zc w0*  <--  p2        textITPUB个人空间SiXD[-P
*----------------------------------------------------------------------*
\8Emh$j X"r6B3K9`0FORM. FRM_COPY_COSTBOM .ITPUB个人空间 eq vn9\rp,WH
  DATA:L_OPT LIKE CTU_PARAMS.ITPUB个人空间:| u \En2tAy)r\O
  DATA:   L_MSTRING(200)  TYPE C.
fwZJrSZ,T%j&W${u0  DATA:   MESSAGE1(200)  TYPE C,ITPUB个人空间(qK:o/m:N!Vy N^s&_
          MESSAGE2(200)  TYPE C.
O~/z^ v_4Sct!{/YQ0  DATA: LV_FLAG(1).
Dy[!K!]]0  DATA: LV_HEDQTY(13).
-rk$Ow7d5[ }2G]9^p1M0  DATA: LV_ITEMQTY(13).

ITPUB个人空间N5| {]v.GS
  L_OPT-DISMODE = 'N'.ITPUB个人空间:Q6z&t@$dz!t
  L_OPT-UPDMODE = 'S'.ITPUB个人空间Sz'FF#rqXAKE"A
  L_OPT-CATTMODE = ''.
W*x2O|c"k4mh0  L_OPT-DEFSIZE = 'X'.ITPUB个人空间:V-W;sr-bc2l~
*  L_OPT-NOBINPT = 'X'.

  LOOP AT IT_TAB2.

    CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'ITPUB个人空间gf*e%Qi
      EXPORTING
Iu wR!PC0        INPUT  = IT_TAB2-MATNR
\L:g G2]0U(thI0      IMPORTINGITPUB个人空间*_S(@7E*[Sx o#oK
        UTPUT = IT_TAB2-MATNR.

    LV_HEDQTY = IT_TAB2-GAMNG.

    PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0100'.ITPUB个人空间l-m"ZSZMz c ]
    PERFORM. BDC_FIELD       USING 'BDC_OKCODE'
6pZB"b5lW*mU+G8U0                                  '/00'.
dx!o]e4}Hnh9W0    PERFORM. BDC_FIELD       USING 'RC29N-MATNR'
Vfo3Bg*R0                                  IT_TAB2-MATNR.
f"o xl-A H0    PERFORM. BDC_FIELD       USING 'RC29N-WERKS'
|l#pS(I&u0                                  IT_TAB2-WERKS.
~V0eLG.Dn!j*i0    PERFORM. BDC_FIELD       USING 'RC29N-STLAN'ITPUB个人空间\,EK$Nu
                                  '6'.
J\7qUk:W|m.OF0*    PERFORM. BDC_FIELD       USING 'RC29N-AENNR'ITPUB个人空间(Nv[O2o(F%C nO8c
*                                  ''.

    PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0110'.
1P[3e1f*P"](Q0    PERFORM. BDC_FIELD       USING 'BDC_OKCODE'
4QNeJb&xH!N ~0                                  '/00'.
7p6s7Q*y#o`h\7A0    PERFORM. BDC_FIELD       USING 'RC29K-BMENG'
U0Z!l@pen'g0                                   LV_HEDQTY.

    PERFORM. BDC_FIELD       USING 'RC29K-STLST'ITPUB个人空间 w ^RD~L
                                    '1'.

    PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0111'.ITPUB个人空间k` t(|G&f
    PERFORM. BDC_FIELD       USING 'BDC_OKCODE'
pN@/xy&Un"d[0                                  '/00'.


q;M7sR(\-Y0    LOOP AT IT_ITEM WHERE RSNUM = IT_TAB2-RSNUM.
+Ap;R&m(["{1~ Z,` O0      LV_ITEMQTY = IT_ITEM-BDMNG.

ITPUB个人空间o?/e%Niy^
      CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
8u!d9W:t1\,[$C0        EXPORTINGITPUB个人空间+Xs#ZP~r
          INPUT  = IT_ITEM-MATNR
"l&k5_#TSe"A(f;H9Y5}0        IMPORTING
xx C U@}!v"L0          UTPUT = IT_ITEM-MATNR.

      IF LV_FLAG = ' '.

        LV_FLAG = 'X'.

        PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0140'.ITPUB个人空间 t2fy"w$\$Y!TQ
        PERFORM. BDC_FIELD       USING 'BDC_OKCODE'ITPUB个人空间LNpTho7X
                                      '/00'.ITPUB个人空间F&?_!q)HSVg
        PERFORM. BDC_FIELD       USING 'RC29P-IDNRK(01)'
4EP!@*`7AKs0                                       IT_ITEM-MATNR.ITPUB个人空间r'q'i,x~? @ T.Tl*I
        PERFORM. BDC_FIELD       USING 'RC29P-MENGE(01)'
V)W2k"{,~vA0                                      LV_ITEMQTY.ITPUB个人空间%t;]1I6ku!`
        PERFORM. BDC_FIELD       USING 'RC29P-POSTP(01)'
s#] ]2b P.TgL}0                                      IT_ITEM-POSTP.

        IF IT_ITEM-POSTP EQ 'L'.

          PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0130'.
;ek? N$X!O-}0N0          PERFORM. BDC_FIELD       USING 'BDC_OKCODE'
c%\a*a`$@2Qj0                                        '/00'.

          PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0131'.ITPUB个人空间@9DEtz3H#w[#`5F,F-~8X
          PERFORM. BDC_FIELD       USING 'BDC_OKCODE'ITPUB个人空间/`0rsi"c ]2Q3^m
                                        '/00'.

        ELSEIF IT_ITEM-POSTP EQ 'N'.
BchuXQM0          PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0130'.ITPUB个人空间r/tPkwh_#C
          PERFORM. BDC_FIELD       USING 'BDC_OKCODE'
&ru N3SDB D%Sv6A0                                        '/00'.

          PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0131'.ITPUB个人空间 ic+Y$Got${&Ha*X
          PERFORM. BDC_FIELD       USING 'BDC_OKCODE'
hyzV)QE0                                        '/00'.

          PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0133'.ITPUB个人空间0O3~HV,I0j f-|;A
          PERFORM. BDC_FIELD       USING 'BDC_OKCODE'ITPUB个人空间Cn {4E7Tcg+a
                                        '/00'.ITPUB个人空间{-W7F&bL,O2r,s
          PERFORM. BDC_FIELD       USING  'RC29P-EKORG' ' '.

ITPUB个人空间qess%NF
        ENDIF.

        PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0140'.ITPUB个人空间3}w$[fN(M;Pl
        PERFORM. BDC_FIELD       USING 'BDC_OKCODE'
E4F$ba3A.`1S'Y0                                        '=FCNP'.
u#K o;Ib3e4L0      ELSE.

        PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0140'.
nN%K+Fp k;Qw"Zx0        PERFORM. BDC_FIELD       USING 'BDC_OKCODE'
AA8\[4g&ZY0                                      '/00'.
jbk,R"K9~m0Kv)R!v0        PERFORM. BDC_FIELD       USING 'RC29P-IDNRK(02)'ITPUB个人空间rdPV}n~;O#C`
                                       IT_ITEM-MATNR.ITPUB个人空间*z,T2c9pa{c
        PERFORM. BDC_FIELD       USING 'RC29P-MENGE(02)'ITPUB个人空间Z t H7n#p,o#Vbr"rU
                                      LV_ITEMQTY.ITPUB个人空间?1Og8N^:ew
        PERFORM. BDC_FIELD       USING 'RC29P-POSTP(02)'ITPUB个人空间RrSn E@Q g^
                                      IT_ITEM-POSTP.

        IF IT_ITEM-POSTP EQ 'L'.

          PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0130'.ITPUB个人空间6ST;rc N;aFd#u2]
          PERFORM. BDC_FIELD       USING 'BDC_OKCODE'
WZ?&zOP'@%v8@0                                        '/00'.

          PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0131'.ITPUB个人空间0^dU+D eh:x+r q
          PERFORM. BDC_FIELD       USING 'BDC_OKCODE'ITPUB个人空间%rB}~!Rc?w8u
                                        '/00'.


r9q6]%s9?Y Nb0        ELSEIF IT_ITEM-POSTP EQ 'N'.ITPUB个人空间%K(S$f*PF
          PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0130'.ITPUB个人空间L+L/ulu~G{3K.I
          PERFORM. BDC_FIELD       USING 'BDC_OKCODE'ITPUB个人空间 [ c7D*@,z
                                        '/00'.

          PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0131'.ITPUB个人空间-xb+M*xz d'@r
          PERFORM. BDC_FIELD       USING 'BDC_OKCODE'
J&o pgA0                                        '/00'.


qu0d'W_0d;\0          PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0133'.ITPUB个人空间4z`-{tGY`
          PERFORM. BDC_FIELD       USING 'BDC_OKCODE'ITPUB个人空间;m0XK2}]$H
                                        '/00'.
ek^x-vE7q c0          PERFORM. BDC_FIELD       USING  'RC29P-EKORG' ' '.


'u5P b.{%a([0        ENDIF.

        PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0140'.ITPUB个人空间 LMIcVxy2ru$R
        PERFORM. BDC_FIELD       USING 'BDC_OKCODE'ITPUB个人空间H;u(v.EOng
                                        '=FCNP'.

ITPUB个人空间;k7By^/^DupB%[
      ENDIF.

      CLEAR IT_ITEM.ITPUB个人空间I%C0X f}"L+\
    ENDLOOP.

    PERFORM. BDC_DYNPRO      USING 'SAPLCSDI' '0140'.
J8Au yD oG?&l0q0    PERFORM. BDC_FIELD       USING 'BDC_OKCODE'
'{+Y|bp5a'Z!A^0                                  '=FCBU'.

*CALL CS01 CREATE COST BOMITPUB个人空间 |d!D&?P
    CALL TRANSACTION 'CS01' USING BDCDATA
7JXrz/png0                            OPTIONS FROM L_OPT
e#`0XFA| ]y0                            MESSAGES INTO MESSTAB.

* BDC SUCCESSITPUB个人空间1me;_FJAKq
    IF SY-SUBRC = 0.
-ir Q)A6Db1uF"?m0      IT_TAB2-FLAG = '0'.ITPUB个人空间s Nj1OnIg
      IT_TAB2-MSG = '创建成本BOM成功'.ITPUB个人空间e4]p/u#e:o+Esap
      ADD 1 TO G_OK.
]XH4J+w9k0* BDC ERROR
nW2G L$dh0    ELSE.ITPUB个人空间MYh iO mdt
      LOOP AT MESSTAB WHERE MSGTYP = 'S'ITPUB个人空间-LP2Z1B.}0u @r
                         OR MSGTYP = 'I'ITPUB个人空间_@VYV+m`} }
                         OR MSGTYP = 'E'
#To7H8c~(nP9k&W_7[0                         OR MSGTYP = 'A'.
7k[QJ1yeRO0      ENDLOOP.ITPUB个人空间)VA&PY5n1x]~1v/Y
      IF NOT MESSTAB IS INITIAL.
0F?)V1G(}(B0        CLEAR: MESSAGE1,ITPUB个人空间;NW(t.r(R
               MESSAGE2.
(N:d'J5b*K h0        LOOP AT MESSTAB.ITPUB个人空间3_:R|E%_
          SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRAITPUB个人空间 i?'N8gxDd*kN$~
                                    AND   ARBGB = MESSTAB-MSGID
2R%Zcs!JI~0                                    AND   MSGNR = MESSTAB-MSGNR.
U] Y7C"x}@Z2fM0          IF SY-SUBRC = 0.
*p9|^;Ha0            L_MSTRING = T100-TEXT.ITPUB个人空间KS_O?y+J
            IF L_MSTRING CS '&1'.ITPUB个人空间 p4\HMG o
              REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.ITPUB个人空间T"P!xv.gL
              REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.ITPUB个人空间CmIFu
              REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.ITPUB个人空间S.Br'LL],sq+n&_X
              REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
7n$x:H6k7Id C0            ELSE.ITPUB个人空间:cj?*N#L-o'c
              REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.ITPUB个人空间)Uw6Kg.lE2U,G
              REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.ITPUB个人空间f.JmT$[-kq
              REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
flZAT}JV0              REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
P^[9k ^r0            ENDIF.ITPUB个人空间kG`|[}0_
            CONDENSE L_MSTRING.
B*h0dX;^RK;n0            CONCATENATE MESSAGE1 L_MSTRING ';' INTO MESSAGE1.ITPUB个人空间r.x i9r;Y*{ x
          ELSE.
D+s_6|u0            CONCATENATE MESSAGE2 MESSTAB ';' INTO MESSAGE2.
m0uY"L!K0          ENDIF.ITPUB个人空间B*RP} u I4F
          CLEAR: MESSTAB,
B[*z5G.^J2d0                 L_MSTRING.
3V `K*Z:Xs"U1`'T0        ENDLOOP.ITPUB个人空间$\ HOh+u8k4^d6_&O/i
        CONCATENATE MESSAGE1 MESSAGE2 INTO IT_TAB2-MSG.ITPUB个人空间i3NY_BP$b
        IT_TAB2-FLAG = '1'.ITPUB个人空间y }Uj1q2z]2d?"H"f3^
        ADD 1 TO G_NO.ITPUB个人空间krY |]8a7r
      ENDIF.

    ENDIF.

    MODIFY IT_TAB2.

    CLEAR:LV_FLAG,IT_TAB2,LV_HEDQTY,LV_ITEMQTY.

    REFRESH BDCDATA.CLEAR BDCDATA.
Q&]P4ail s8Er0    REFRESH MESSTAB.CLEAR MESSTAB.ITPUB个人空间w Qr8N+n![ V0Q
  ENDLOOP.

 

 

ENDFORM.                    " FRM_COPY_COSTBOM
WSQ D6X&a.r$I^(i0*&---------------------------------------------------------------------*
'F#H/O]Bx F0*&      Form  FRM_WRITE_LOGITPUB个人空间GS%Cu:gzy`
*&---------------------------------------------------------------------*ITPUB个人空间9WBS/g5o
*       textITPUB个人空间[6O.`m&`;BB({|:I
*----------------------------------------------------------------------*ITPUB个人空间lO;q!O4_m
*  -->  p1        textITPUB个人空间H#C&A'U3O|1Q
*  <--  p2        text
4iT,p!^7y'\)q5cq0*----------------------------------------------------------------------*ITPUB个人空间*yj8_ @x/mY)w7\,v
FORM. FRM_WRITE_LOG .

*BDC RESULT
?7Rp(_-aS | `0  FORMAT COLOR 5 ON.ITPUB个人空间-JkDYz2HC f
  WRITE:/,(40) '运行结果' CENTERED.
i(kAX r/kV/U9@.c0  FORMAT COLOR OFF.

  FORMAT COLOR 6 ON.ITPUB个人空间5{1N4G_D c@.t k
  WRITE:/ '创建成本bom成功:',G_OK,'条'.
!f x/\:SMo3s0  FORMAT COLOR OFF.

  SKIP.

  FORMAT COLOR 6 ON.
$nG|c[%hDw+x"V0  WRITE:/ '创建成本bom失败:',G_NO,'条'.ITPUB个人空间gH,i^VY L'X
  FORMAT COLOR OFF.

  SORT IT_TAB2 BY FLAG .ITPUB个人空间)S7pevj#L C!c|.E
  LOOP AT IT_TAB2 .

    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
'i.[0X7[/R)E I'gB0      EXPORTING
w9B!p6s-~YW0        INPUT        = IT_TAB2-MATNRITPUB个人空间5Y4e |-rz_5h
      IMPORTING
0T&S7~R1`+bl SPf0        OUTPUT       = IT_TAB2-MATNRITPUB个人空间!H+@a:eLn1Ps.X
      EXCEPTIONS
:fzF ZI$A-LR1z3s)A0        LENGTH_ERROR = 1ITPUB个人空间r(k i Cg9z [
        OTHERS       = 2.ITPUB个人空间|'M0m%t6}4H |j,T
    IF SY-SUBRC <> 0.
f Ptm}.e!a0* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOITPUB个人空间&^Ym D*n6`
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ITPUB个人空间eeIv [P
    ENDIF.

ITPUB个人空间$cd_Y W)nK$}?6g\4L
    WRITE:/1(10) IT_TAB2-AUFNR,
.Tv3r ]5`0            (10) IT_TAB2-RSNUM,
b/t'N\r-R^0            (18) IT_TAB2-MATNR,ITPUB个人空间f g'q X4U7X
            (04) IT_TAB2-WERKS,ITPUB个人空间"@;}}D?
           (100) IT_TAB2-MSG.

  ENDLOOP.

ENDFORM.                    " FRM_WRITE_LOG

*&---------------------------------------------------------------------*
p3L+f}JEI0*&      Form  bdc_dynpro
g~4x8c[f2y0*&---------------------------------------------------------------------*
"@3nO[5U1M-PX0*       textITPUB个人空间 M`J7Db S1E{;D1m
*----------------------------------------------------------------------*
$s-GO1SP-C3B`0*      -->P_0644   text
"IB ]#II(t%i,g/TA~0*      -->P_0645   text
lS0zm'xa0NWM0*----------------------------------------------------------------------*
z?#@(a#T0FORM. BDC_DYNPRO USING PROGRAM DYNPRO.ITPUB个人空间6R"MN \|+{(_)_%q^
  CLEAR BDCDATA.
\5eK/P}?0  BDCDATA-PROGRAM  = PROGRAM.ITPUB个人空间ac"Y\j[hsy
  BDCDATA-DYNPRO   = DYNPRO.
],z8k7[Q0  BDCDATA-DYNBEGIN = 'X'.ITPUB个人空间 xp6k#N z"^P
  APPEND BDCDATA.ITPUB个人空间:^Q.R-S3R(n-D2N
ENDFORM.                    "BDC_DYNPRO

*&---------------------------------------------------------------------*
+sR ?-j'B|0*&      Form  bdc_field
C4N#XZD'NWI0*&---------------------------------------------------------------------*ITPUB个人空间I VTwy&D
*       text
'O3Q:kn.J {n0*----------------------------------------------------------------------*
;Z f~[q+wd#B0*      -->P_0639   text
S"i}:i_2]+e@}(E0*      -->P_0640   text
G)| l+b*\;_B!~O0*----------------------------------------------------------------------*
$X jk#iz V2N0FORM. BDC_FIELD USING FNAM FVAL.ITPUB个人空间3c3J;~'fV1y jx\
**  IF FVAL <> NODATA.
%iP7fe }&V0  CLEAR BDCDATA.ITPUB个人空间6|,c By4_4x
  BDCDATA-FNAM = FNAM.
A!J!w.`2j/~w|8g0  BDCDATA-FVAL = FVAL.
Dg.]z0a.~&C%D0  APPEND BDCDATA.ITPUB个人空间4{5@$P!z+m+M6D v1`
**  ENDIF.ITPUB个人空间vb.q:C*B
ENDFORM.                    "BDC_FIELDITPUB个人空间3J?XQ#^4t ^ o
*&---------------------------------------------------------------------*ITPUB个人空间*E2|,A Tz.f,X
*&      Form  FRM_CHANGE_MAT_STATUS
VIv B&h0*&---------------------------------------------------------------------*
S]!q}B-C r jNB!_y@v0*       textITPUB个人空间z+g"]M/R_1oGzu
*----------------------------------------------------------------------*ITPUB个人空间*\6j2D!G%q9i
*  -->  p1        textITPUB个人空间7F)sLF6q \n
*  <--  p2        textITPUB个人空间5}'`Od e+QF v:}
*----------------------------------------------------------------------*ITPUB个人空间TBh%mg
FORM. FRM_CHANGE_MAT_STATUS .

  LOOP AT IT_ITEM2.ITPUB个人空间m(l%Lw,vt.px*v
    CLEAR: EX_HEADDATA,EX_CLIENTDATA,EX_CLIENTDATAX, EX_PLANTDATA, EX_PLANTDATAX, IM_RETURN.

    MOVE: IT_ITEM2-MATNR TO EX_HEADDATA-MATERIAL,ITPUB个人空间JHpFYc$x
          'X'            TO EX_HEADDATA-BASIC_VIEW,
pk;x.Y{4sW0          'X'            TO EX_HEADDATA-MRP_VIEW.

    IF IT_ITEM2-LVORM EQ 'X'.
dR_ S%VB N0      MOVE: ' ' TO EX_CLIENTDATA-DEL_FLAG.
COs7F'`/l{0      MOVE: 'X' TO EX_CLIENTDATAX-DEL_FLAG.ITPUB个人空间;ek \!C^;ix
    ENDIF.

    IF IT_ITEM2-MSTAE NE ' '.
zP)_Z:C,f R-g*j#`n0      MOVE: ' ' TO EX_CLIENTDATA-PUR_STATUS.
_GY'hf+vb0      MOVE: 'X' TO EX_CLIENTDATAX-PUR_STATUS.ITPUB个人空间 T6EYm8I8}Z
    ENDIF.

    IF IT_ITEM2-MMSTA NE ' '.ITPUB个人空间`fib&Mz
      MOVE: IT_ITEM2-WERKS     TO EX_PLANTDATA-PLANT,
0fd m"k%Ei1s9`0            ' '     TO EX_PLANTDATA-PUR_STATUS.

      MOVE: IT_ITEM2-WERKS TO EX_PLANTDATAX-PLANT,
3S V:i)N#}:X3GC&|/`0            'X'           TO EX_PLANTDATAX-PUR_STATUS.
:};kZ7p`$T.Z0    ENDIF.

    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'ITPUB个人空间QUEq8U&ag M'E
      EXPORTING
*I3?!yuc8u!J;g0        HEADDATA    = EX_HEADDATAITPUB个人空间6l\Mck;e|Hgqd
        CLIENTDATA  = EX_CLIENTDATAITPUB个人空间9DBZ(sE2VH&u
        CLIENTDATAX = EX_CLIENTDATAXITPUB个人空间] _ {[V
        PLANTDATA   = EX_PLANTDATAITPUB个人空间LMY&S&_&`7x
        PLANTDATAX  = EX_PLANTDATAXITPUB个人空间w/{ x7o v3x2N
      IMPORTINGITPUB个人空间4N$VJ.FR*KZm
        RETURN      = IM_RETURN.

ITPUB个人空间6k^.t LG
    IF IM_RETURN-TYPE = 'E'.

    ELSE.ITPUB个人空间Z.di9hMq!Ze3{)C
      COMMIT WORK AND WAIT.ITPUB个人空间7^&I})IC KV vFG
      WAIT UP TO 5 SECONDS.

    ENDIF.

  ENDLOOP.

 

ENDFORM.                    " FRM_CHANGE_MAT_STATUS
8{[3s X ? KVMWw0*&---------------------------------------------------------------------*ITPUB个人空间 X2l!_7Vb#HV
*&      Form  FRM_RETURN_MAT_STATUSITPUB个人空间|2V:Tr [%~ EK+}.@
*&---------------------------------------------------------------------*ITPUB个人空间QD"E] w/T
*       text
l0B3A.F%I%~KO0*----------------------------------------------------------------------*
5H;X:v4cL0*  -->  p1        textITPUB个人空间#@ _ nr!PG/e_@
*  <--  p2        textITPUB个人空间p9l#S!['d|
*----------------------------------------------------------------------*ITPUB个人空间1X"\F8p\w;Z
FORM. FRM_RETURN_MAT_STATUS .
fr|&\)FFE0  LOOP AT IT_ITEM2.ITPUB个人空间$u#GgwA?9r g
    CLEAR: EX_HEADDATA,EX_CLIENTDATA,EX_CLIENTDATAX, EX_PLANTDATA, EX_PLANTDATAX, IM_RETURN.

    MOVE: IT_ITEM2-MATNR TO EX_HEADDATA-MATERIAL,ITPUB个人空间 Um&`,d-@'J
          'X'            TO EX_HEADDATA-BASIC_VIEW,ITPUB个人空间A/s1y V3Q6Qm;B(M
          'X'            TO EX_HEADDATA-MRP_VIEW.

    IF IT_ITEM2-LVORM EQ 'X'.ITPUB个人空间[?4~.b9V L5L6r)r
      MOVE: 'X' TO EX_CLIENTDATA-DEL_FLAG.
D O$N Kh$y0      MOVE: 'X' TO EX_CLIENTDATAX-DEL_FLAG.
0X,cx4u*`0Y4jIo+^0    ENDIF.

    IF IT_ITEM2-MMSTA NE ' '.ITPUB个人空间x PLZ6Lrm j m @
      MOVE: IT_ITEM2-MMSTA TO EX_CLIENTDATA-PUR_STATUS.ITPUB个人空间,F^p'Qe2l yd }
      MOVE: 'X' TO EX_CLIENTDATAX-PUR_STATUS.ITPUB个人空间I"J!murtE1{7U J
    ENDIF.

    IF IT_ITEM2-MMSTA NE ' '.
by#K JE4`w8}0      MOVE: IT_ITEM2-WERKS     TO EX_PLANTDATA-PLANT,ITPUB个人空间8C5oq8YC
            IT_ITEM2-MMSTA     TO EX_PLANTDATA-PUR_STATUS.

      MOVE: IT_ITEM2-WERKS TO EX_PLANTDATAX-PLANT,
$X:H+Me{x5L1PD0            'X'           TO EX_PLANTDATAX-PUR_STATUS.
|}?&DL7LTN0    ENDIF.

    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
)J JH.n9gz*N0      EXPORTING
t(@ l_PS"M/Xoi0        HEADDATA    = EX_HEADDATAITPUB个人空间u+}A tUeR0},X
        CLIENTDATA  = EX_CLIENTDATAITPUB个人空间Q [&q3^ v:b|u
        CLIENTDATAX = EX_CLIENTDATAXITPUB个人空间t{ nn$B/[
        PLANTDATA   = EX_PLANTDATA
:_&}_to T]\$]0        PLANTDATAX  = EX_PLANTDATAXITPUB个人空间.QY0|&y;e/G%jZ,g
      IMPORTINGITPUB个人空间9z/B'h y"s
        RETURN      = IM_RETURN.


*D2h&y.m*W9A'J)q ]0    IF IM_RETURN-TYPE = 'E'.

    ELSE.ITPUB个人空间Mi"G2zB+H
      COMMIT WORK AND WAIT.

    ENDIF.

  ENDLOOP.
$cip`C(dJn0ENDFORM.                    " FRM_RETURN_MAT_STATUS
E1O3w5s9n7k6p0*&---------------------------------------------------------------------*
0Kj f%?k1c0*&      Form  FRM_DEL_COSTBOM
+j*J T c/A4Lc0*&---------------------------------------------------------------------*
vRfKZU0*       textITPUB个人空间P#u2m#MX*J#Lc'A Uh
*----------------------------------------------------------------------*ITPUB个人空间3Gj.F/q^PO
*  -->  p1        text
_*Z$xbB0A3wV0*  <--  p2        text
P _(W0\6H7a0*----------------------------------------------------------------------*ITPUB个人空间B4E!H.Hi!N\:z
FORM. FRM_DEL_COSTBOM .ITPUB个人空间jPe"{d`
  DATA: LV_TEMP LIKE CAPIFLAG-FLWARNING.

  LOOP AT IT_DEL.

    CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
I ~b7l!c0      EXPORTING
b!d5]&~#b#eLL0        INPUT  = IT_DEL-MATNRITPUB个人空间z$e Z M o CM F6^m
      IMPORTINGITPUB个人空间|/Op4`.Y o6UJb
        UTPUT = IT_DEL-MATNR.

    CALL FUNCTION 'CSAP_MAT_BOM_DELETE'
V#I ds7JQ sp0      EXPORTING
8jR{-?"o&p {N:T0        MATERIAL   = IT_DEL-MATNR
:d1HU6l_*`L [0        PLANT      = IT_DEL-WERKSITPUB个人空间8CO8@}1UOY^_
        BOM_USAGE  = '6'ITPUB个人空间@U6|d8fj%f!M%S E.t
      IMPORTING
I(m8j'x'o)z'}r0        FL_WARNING = LV_TEMP
0}K!V D8])B$v0      EXCEPTIONS
\7tk2KT0        ERROR      = 1
"x7~KQ0F)m$L OsG0        OTHERS     = 2.

    IF SY-SUBRC EQ 0.ITPUB个人空间+tJ\ h0d |$F1A ^
      COMMIT WORK AND WAIT.
A-cA't/Du#]J"A0      WAIT UP TO 3 SECONDS.
L d4^ w+|0    ENDIF.

  ENDLOOP.

ENDFORM.                    " FRM_DEL_COSTBOMITPUB个人空间m}5vMjl8O;[
*&---------------------------------------------------------------------*
T'eD:ht|S-}0*&      Form  frm_bapi_cs01ITPUB个人空间V3HA"r$v(@U$S
*&---------------------------------------------------------------------*
0sgB)VSK e0*       textITPUB个人空间,QH;qx-CJ X6W
*----------------------------------------------------------------------*
,B:I CbUSTv _0*  -->  p1        textITPUB个人空间f3if3WeQ gW
*  <--  p2        text
,zSj0Y&M-x0*----------------------------------------------------------------------*ITPUB个人空间C] kG\xM'h_
FORM. FRM_BAPI_CS01 .
)X!UE$^g0  DATA: ES_MAST LIKE BAPIBOMMST .ITPUB个人空间4r y6lKDg
  DATA: ES_STZU LIKE BAPIBOMSTZ .ITPUB个人空间 x*Wx F3yt ]|
  DATA: IM_RET LIKE BAPIRET2 .
R(@djRuQ~5e0  DATA: IS_STKO LIKE BAPIBOMSTK OCCURS 0 WITH HEADER LINE.
lE:Cun v"`0  DATA: IS_STPO LIKE BAPIBOMSTP OCCURS 0 WITH HEADER LINE.ITPUB个人空间;w}B`W
  DATA: IS_STAS LIKE BAPIBOMSTA OCCURS 0 WITH HEADER LINE.
5qm|8K]D)u},z.{ ?0*
#I*Gb:n~.{0  DATA: LV_ITEM TYPE I.

  LOOP AT IT_TAB2.

*    CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'ITPUB个人空间D-~ ~3l6ile0^
*      EXPORTING
`:WKU2}UL0*        INPUT  = IT_TAB2-MATNR
V_!o_Pgk0*      IMPORTING
)g[ U3vd il[9kP0*        UTPUT = IT_TAB2-MATNR.


:e-i;nh[ B~0}0    REFRESH IS_STPO . CLEAR ES_MAST . CLEAR IM_RET. CLEAR IS_STKO.ITPUB个人空间8I9hl,HT
**** BAPI 参数 BOM MAST表****************************ITPUB个人空间g^ |3^?T{$~:h
    MOVE : '009' TO ES_MAST-OPERATION ,ITPUB个人空间0F0a!a2BY3fm/M
           IT_TAB2-MATNR TO ES_MAST-MATERIAL,
aZ&RvWn0           IT_TAB2-WERKS TO ES_MAST-PLANT,ITPUB个人空间l:vU&t@u
           SY-DATUM TO ES_MAST-CREATE_DAT,ITPUB个人空间"q&R}e;N-Y
*           '01' TO ES_MAST-ALT_BOM,
-UgN-c3wM?7Sb*I0           '6' TO ES_MAST-BOM_USAGE.

    MOVE :
6w p9},~+f7V6`0           '009' TO IS_STKO-OPERATION,
"F~YC uKa xg0           'M' TO IS_STKO-BOM_CATEGO,
&a!|!McM1t0I,Wg7P&f0*           '01' TO IS_STKO-ALT_BOM,ITPUB个人空间8Qs0QYP~9m
           SY-DATUM TO IS_STKO-VALID_FROM,
]U6tLjz\0           IT_TAB2-GAMNG TO IS_STKO-BASE_QTY.
:\va U|F i8Q$\0    APPEND IS_STKO.
5V w8zf5l8b!|8g0    CLEAR IS_STKO.

*    LOOP AT IT_ITEM WHERE RSNUM = IT_TAB2-RSNUM.ITPUB个人空间x7EN6c(w;q%s
*
` KM2gj+K0**      CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
$r X.M9n BWi6x0**        EXPORTINGITPUB个人空间O.a4h8G^:M8m5Ly%HT
**          INPUT  = IT_ITEM-MATNR
|`(iSy$pl[pV2a6@0**        IMPORTING
!sdK`3@t1_m0**          UTPUT = IT_ITEM-MATNR.ITPUB个人空间4N g)H1l Q7X&B
*ITPUB个人空间/A8D'c n%dZ5g
*      MOVE:
-t ck)hT `I0*             '009' TO IS_STPO-OPERATION,ITPUB个人空间_aC6W;B5j8A
**             IT_ITEM-MEINS TO IS_STPO-UNCOMP,ITPUB个人空间+]x7~ ~;`FE]4H(}
*             IT_ITEM-BDMNG TO IS_STPO-COMPON_QTY,
u\a0o[~0**              '1' TO IS_STPO-COMPON_QTY,
E N K}5d0*             IT_ITEM-MATNR TO IS_STPO-COMPONENT,ITPUB个人空间&P-NG-Y y @
*             IT_ITEM-POSTP TO IS_STPO-ITEM_CAT.
4X@]uLm0*ITPUB个人空间?E0c{W0Hr{
*ITPUB个人空间R"Z| y/C F pe
*      APPEND IS_STPO.ITPUB个人空间a];U`0? z}4t
*      CLEAR IS_STPO.ITPUB个人空间-P?eb1T/_ q
*ITPUB个人空间 ~r3NLcn,T"b'v5z2~
*    ENDLOOP.

    MOVE:ITPUB个人空间:L(v&ZIH|
           '009' TO IS_STPO-OPERATION,
/Gx q-@ nW yko0*             IT_ITEM-MEINS TO IS_STPO-UNCOMP,
-N*a \8V7Pe0           '1' TO IS_STPO-COMPON_QTY,
-Xq]4V2cV8|/c4Q-VH0           '000000000000002009' TO IS_STPO-COMPONENT,
p\,{5gt;u0           'N' TO IS_STPO-ITEM_CAT.ITPUB个人空间$W|A1Exbv-|C
*             IT_ITEM-aennr TO IS_STPO-change_no,
1u_H_5ba6\0*             LV_ITEM TO IS_STPO-BOM_ITM_NO.

    APPEND IS_STPO.ITPUB个人空间7M `3P(w@AM
*ITPUB个人空间-X n[9E)P-FM
*      MOVE:ITPUB个人空间9M!iq9[7X W N
*             '009' TO IS_STPO-OPERATION,ITPUB个人空间0x5OX7lRRI o
**             IT_ITEM-MEINS TO IS_STPO-UNCOMP,ITPUB个人空间T2TxQ z1zeO$c4m~c
*             '1' TO IS_STPO-COMPON_QTY,ITPUB个人空间iktA$o$^B;t
*             '000000000031020744' TO IS_STPO-COMPONENT,
b Uu$`#mh#o2K/DyY V0*             'L' TO IS_STPO-ITEM_CAT.
}"F [_(~9q0**             IT_ITEM-aennr TO IS_STPO-change_no,ITPUB个人空间 { A ?3[luv9c
**             LV_ITEM TO IS_STPO-BOM_ITM_NO.ITPUB个人空间(x"u"C`:}@9W
*ITPUB个人空间zi j m)z
*      APPEND IS_STPO.

    CALL FUNCTION 'BAPI_BOM_UPLOAD_SAVE'ITPUB个人空间}C"O2A)C4g-P
      EXPORTING
D#o7b7K%`"LpZ0        IS_MAST   = ES_MAST
!_%F*ia&}q.m%k ^0        IS_STZU   = ES_STZUITPUB个人空间TaMYdkD@
      IMPORTING
Mfy{!R"h[R0        ES_RETURN = IM_RETITPUB个人空间\EzJl4_#s:[
      TABLES
$pZ9tG0B h0        IT_STKO   = IS_STKO
:ydYV7m$Sjo;m#^j.w0        IT_STPO   = IS_STPO
2c'XNI$V#[]'ne0        IT_STAS   = IS_STAS.

    COMMIT WORK.
`Da+AS"eV0    IF SY-SUBRC <> 0.ITPUB个人空间Te/ub]2Fae tP
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOITPUB个人空间zd:OH3Z(r_|T
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ITPUB个人空间ouN4n6y;n!W
    ELSE.

      COMMIT WORK AND WAIT .

    ENDIF.ITPUB个人空间4]$k2H)`Yo
    CLEAR IT_TAB2.

  ENDLOOP.

ENDFORM.                    " frm_bapi_cs01ITPUB个人空间$n&H&l-M] K


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-11  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 7500
  • 日志数: 766
  • 文件数: 1
  • 书签数: 4
  • 建立时间: 2008-01-17
  • 更新时间: 2008-09-19

RSS订阅

Open Toolbar