ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » SAP R/3 » 系统开发及跨应用设置 » 有关RFC作batch,多个asset及subasset时无法作unlock

标题: 有关RFC作batch,多个asset及subasset时无法作unlock
离线 torso_turtle



精华贴数 0
个人空间 0
技术积分 10 (94940)
社区积分 0 (1777804)
注册日期 2008-5-15
论坛徽章:0
      
      

发表于 2008-5-15 12:15 
有关RFC作batch,多个asset及subasset时无法作unlock

原码如下,但目前实在找不出错误,还请高手帮忙
若有冒犯,请见谅,谢谢

*"  IMPORTING
*"     VALUE(P_ANLN1) TYPE  ANLN1 OPTIONAL
*"     VALUE(P_ANLN2) TYPE  ANLN2 OPTIONAL
*"     VALUE(P_FUNC) TYPE  FUNC OPTIONAL
*"  EXPORTING
*"     VALUE(R_ANLN1) TYPE  ANLN1
*"     VALUE(R_ANLN2) TYPE  ANLN2
*"     VALUE(FLAG) TYPE  FLAG
*"  TABLES
*"      MESSAGE STRUCTURE  MESSAGE OPTIONAL
*"      Z_ZTASS STRUCTURE  ZTASS OPTIONAL

* TABLES: ANLA.
  CLEAR MESSAGE.
  DATA: P_MODE(1) TYPE C.
  P_MODE = 'N'.

  IF P_FUNC = 'Q'.
    Check ( P_ANLN1 EQ SPACE AND P_ANLN2 EQ SPACE ).
    SELECT * INTO CORRESPONDING FIELDS OF TABLE Z_ZTASS FROM ANLA
      WHERE BUKRS = '1234' AND XSPEB = 'X'.

    LOOP AT Z_ZTASS.
      SELECT SINGLE KOSTL FROM ANLZ INTO Z_ZTASS-KOS
        WHERE ANLN1 =  Z_ZTASS-ANLN1 AND ANLN2 =  Z_ZTASS-ANLN2
          AND BUKRS = '1234' AND BDATU >= SY-DATUM.
      SELECT SINGLE KTGRTX FROM T095T INTO Z_ZTASS-KTGRTX
        WHERE KTOGR = Z_ZTASS-ANLKL.
      SELECT SINGLE ANLUE_TXT FROM T087V INTO Z_ZTASS-ANLUE_TXT
        WHERE ANLUE = Z_ZTASS-ANLUE.
      SELECT SINGLE NAME1 FROM LFA1 INTO Z_ZTASS-LIEFE
        WHERE LIFNR = Z_ZTASS-LIFNR.
      MOVE 1 TO Z_ZTASS-MENGE.
      MODIFY Z_ZTASS. CLEAR Z_ZTASS.
    ENDLOOP.

  ELSEIF P_FUNC = 'B'.
    Check ( P_ANLN1 <> SPACE AND P_ANLN2 <> SPACE ).
* SCREEN 100
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '100'.
    PERFORM BDC_FIELD  USING 'ANLA-ANLN1' P_ANLN1.
    PERFORM BDC_FIELD  USING 'ANLA-ANLN2' P_ANLN2.
    PERFORM BDC_FIELD  USING 'ANLA-BUKRS' '1234'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
* SCREEN 200
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '200'.
    PERFORM BDC_FIELD  USING 'ANLA-XSPEB' 'X'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BUCH'.
    CALL TRANSACTION 'AS05' USING BDCDATA MODE P_MODE UPDATE 'S'
                   MESSAGES INTO MESSTAB.
    IF SY-SUBRC = 0.
      SELECT SINGLE XSPEB INTO ANLA-XSPEB FROM ANLA
          WHERE ANLN1 = P_ANLN1 AND ANLN2 = P_ANLN2 AND BUKRS = '1234'.
      IF ANLA-XSPEB = 'X'.
        R_ANLN1 = P_ANLN1.
        R_ANLN2 = P_ANLN2.
        FLAG = ''.
      ELSE.
        R_ANLN1 = P_ANLN1.
        R_ANLN2 = P_ANLN2.
        FLAG = 'X'.
      ENDIF.
    ENDIF.

  ELSEIF P_FUNC = 'U'.
    Check ( P_ANLN1 <> SPACE AND P_ANLN2 <> SPACE ).
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '100'.
    PERFORM BDC_FIELD  USING 'ANLA-ANLN1' P_ANLN1.
    PERFORM BDC_FIELD  USING 'ANLA-ANLN2' P_ANLN2.
    PERFORM BDC_FIELD  USING 'ANLA-BUKRS' '1234'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
* SCREEN 200
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '200'.
    PERFORM BDC_FIELD  USING 'NO_SELECTION' 'X'.
    PERFORM BDC_FIELD  USING 'ANLA-XSPEB' ''.
    PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BUCH'.
    CALL TRANSACTION 'AS05' USING BDCDATA MODE P_MODE UPDATE 'S'
                    MESSAGES INTO MESSTAB.
    IF SY-SUBRC = 0.
      SELECT SINGLE XSPEB INTO ANLA-XSPEB FROM ANLA
          WHERE ANLN1 = P_ANLN1 AND ANLN2 = P_ANLN2 AND BUKRS = '1234'.
      IF ANLA-XSPEB = ''.
        R_ANLN1 = P_ANLN1.
        R_ANLN2 = P_ANLN2.
        FLAG = ''.
      ELSE.
        R_ANLN1 = P_ANLN1.
        R_ANLN2 = P_ANLN2.
        FLAG = 'X'.
      ENDIF.
    ENDIF.
  ENDIF.

ENDFUNCTION.

[ 本帖最后由 torso_turtle 于 2008-5-15 12:18 编辑 ]


顶部
 
    


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问