- UID
- 14228607
- 阅读权限
- 20
- 帖子
- 3
- 精华贴数
- 0
- 技术排名
- 131078
- 技术积分
- 10
- 社区排名
- 1879633
- 社区积分
- 0
- 注册时间
- 2008-5-15
- 精华贴数
- 0
- 技术积分
- 10
- 社区积分
- 0
- 注册时间
- 2008-5-15
- 论坛徽章:
- 0
|
发表于 2008-5-15 12:15:09
|显示全部楼层
原码如下,但目前实在找不出错误,还请高手帮忙
若有冒犯,请见谅,谢谢
*" 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 编辑 ] |
|