Текущее время: Вс, авг 03 2025, 21:05

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Help!
СообщениеДобавлено: Чт, окт 25 2007, 08:09 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, окт 10 2006, 12:23
Сообщения: 679
Откуда: Санкт-Петербург
Пол: Мужской
Здравствуйте! помогите пжалст со следующей задачей...
Через транзакцию "co04n" (печать производственных заказов) необходимо после того как выводится список заказов...если выделяю
две или больше строк то необходимые данные суммируются и выводятся в один формуляр (наряд суммарный).
-------------------------------
Алгоритм в ТЗ следующий:
1. Для выбора поля Р16 (AFPO-KDAUF), необходимо перейти в таблицу AFPO по Р1 (AFKO-AUFNR).
2. Для выбора поля Р17 (AFPO-KDPOS), необходимо перейти в таблицу AFPO по Р1 (AFKO-AUFNR).
3. Для выбора поля Р18 (AFVV-VGW02), Р19 (AFVV-VGE02), необходимо перейти в таблицу AFVV по Р14 (AFVV-AUFPL) и Р15 (AFVV-APLZL).
-------------------------------
Надо суммировать по одинаковым AFVR-ARBPL, AFPO-KDAUF. Поле сумма AFVV-VGW02.

tables: AFKO, CRHD, AFVC, MARA, AFVV, AFPO, T024A, MAKT.

data: F1 like AFKO-AUFNR,
F2 like CRHD-ARBPL,
P3 like CRHD-OBJID,
P4 like AFVC-ARBID,
F3 like AFVC-RUECK,
F4 like MARA-BISMT,
F5 like AFVC-VORNR,
F6 like AFVC-LTXA1,
F7(13) type c,
F8 like AFVV-MEINH,
F9 like AFVV-FSAVD,
F10 like AFVV-SSEDD,
F11 like T024A-TXT,
F16 like AFPO-KDAUF,
F17 like AFPO-KDPOS,
F18 like AFVV-VGW02,
F19 like AFVV-VGE02,

ZAUFPL like AFVC-AUFPL,
ZAPLZL like AFVC-APLZL,
ZVGW02 like AFVV-VGW02,
ZVGE02 like AFVV-VGE02,
ZKDAUF like AFPO-KDAUF,
ZKDPOS like AFPO-KDPOS,

ZMAKTX like MAKT-MAKTX,

F1a like AFKO-AUFNR,
F2a like CRHD-ARBPL,
P3a like CRHD-OBJID,
P4a like AFVC-ARBID,
F3a like AFVC-RUECK,
F4a like MARA-BISMT,
F5a like AFVC-VORNR,
F6a like AFVC-LTXA1,
F7a(13) type c,
F8a like AFVV-MEINH,
F9a like AFVV-FSAVD,
F10a like AFVV-SSEDD,
F11a like T024A-TXT,
F16a like AFPO-KDAUF,
F17a like AFPO-KDPOS,
F18a like AFVV-VGW02,
F19a like AFVV-VGE02,
ZMAKTXa like MAKT-MAKTX.


types: begin of My1,
F1 like AFKO-AUFNR,
F2 like CRHD-ARBPL,
P3 like CRHD-OBJID,
P4 like AFVC-ARBID,
F3 like AFVC-RUECK,
F4 like MARA-BISMT,
F5 like AFVC-VORNR,
F6 like AFVC-LTXA1,
F7b(13) type p decimals 1,
F7(13) type c,
F8 like AFVV-MEINH,
F9 like AFVV-FSAVD,
F10 like AFVV-SSEDD,
F11 like T024A-TXT,
F16 like AFPO-KDAUF,
F17 like AFPO-KDPOS,
F18 like AFVV-VGW02,
F19 like AFVV-VGE02,
P14 like AFKO-PLNBEZ,
P15 like AFKO-PLGRP,
P16 like AFPO-KDAUF,
P17 like AFPO-KDPOS,
P18 like AFVV-VGW02,
P19 like AFVV-VGE02,
ZMAKTX like MAKT-MAKTX,
P20 like AFKO-AUFPL,
P181 like AFVC-AUFPL,
P191 like AFVC-APLZL,
end of My1,
begin of My2,
F5 like AFVC-VORNR,
end of My2.

data: it type table of My1 with header line,
wa_it type My1,
itF5 type table of My2 with header line,
cnt type i,
P14 like AFKO-PLNBEZ,
P15 like AFKO-PLGRP,
P20 like AFKO-AUFPL
.

*&---------------------------------------------------------------------
*

*REPORT PSFCSPLT MESSAGE-ID CO.
*---------------------------------------------------------------------*
* *
* PPS-Print: Operation-split *
* *
*---------------------------------------------------------------------*

* DATA-Statements general
INCLUDE PPCOINCL.
* DATA-Statements specific for production orders
INCLUDE CODRGT10.

* entry to print
PERFORM PRINT_SUB.

*---------------------------------------------------------------------*
* FORM PRINT_SUB *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM PRINT_SUB.
DATA USE_DEFAULT.

* Document-tables
INCLUDE LCODRINC.

LOOP AT ITAB_TDR WHERE OBJECT = OBJ-POS
OR OBJECT = OBJ-SOP
AND AUFNR = PRINT_CO-AUFNR.
EXIT.
ENDLOOP.

CHECK SY-SUBRC IS INITIAL.

* fill workarea of header (probably more than 1 order is to be printed)

READ TABLE ITAB_TDR WITH KEY OBJECT = OBJ-ALT
AUFNR = PRINT_CO-AUFNR.
CHECK SY-SUBRC IS INITIAL.
* Save Indextable of header
ITAB_ORD = ITAB_TDR.

READ TABLE CAUFVD_TAB WITH KEY AUFNR = ITAB_ORD-AUFNR.
CHECK SY-SUBRC IS INITIAL.

PERFORM PPPR_STD_INIT_ORDER USING CAUFVD_TAB.

PERFORM PPPR_COLLECT_DESTINATIONS USING PRINT_CO.

*&---------------------------------------------------------------------
*
loop at ITAB_TDR where AUFNR = PRINT_CO-AUFNR.
itF5-F5 = ITAB_TDR-VORNR.
append itF5.
endloop.
describe table itF5 lines cnt.

select single PLNBEZ PLGRP AUFPL
into (P14, P15, P20)
from AFKO
where AUFNR = caufvd-aufnr.

P14 = caufvd-matnr.

data: where_cl type string.

select RUECK VORNR LTXA1 ARBID AUFPL APLZL
into (wa_it-F3, wa_it-F5, wa_it-F6, wa_it-P4, wa_it-P181, wa_it-P191)
from AFVC
FOR ALL ENTRIES IN itF5
where AUFPL = P20
and VORNR = itF5-F5
.

wa_it-F1 = caufvd-aufnr.
wa_it-P14 = P14.
wa_it-P15 = P15.
wa_it-P20 = P20.

select single BISMT
into wa_it-F4
from MARA
where MATNR = wa_it-P14.

select single MAKTX
from MAKT
into wa_it-ZMAKTX
where MATNR = wa_it-P14.

select single TXT
into wa_it-F11
from T024A
where FEVOR = wa_it-P15.

select single ARBPL
into wa_it-F2
from CRHD
where OBJID = wa_it-P4.

wa_it-F2 = wa_it-F2(3).

select single MGVRG MEINH FSAVD SSEDD VGW02 VGE02
into (wa_it-F7b, wa_it-F8, wa_it-F9, wa_it-F10, wa_it-F18, wa_it-F19)
from AFVV
where AUFPL = wa_it-P181 and
APLZL = wa_it-P191.

data p_temp(13) type p decimals 1.
p_temp = wa_it-F7b - ceil( wa_it-F7b ).
if ( p_temp = 0 ).
wa_it-F7 = ceil( wa_it-F7b ).
else.
wa_it-F7 = wa_it-F7b.
endif.
*новый код
select single KDAUF KDPOS "доб KDPOS
from AFPO
into (wa_it-F16, ZKDPOS) "доб ZKDPOS
where AUFNR = wa_it-F1.

append wa_it to it.
clear wa_it.
endselect.

clear F5.

DO PRINT_CO-COPYS TIMES.
IF SY-INDEX GT 1.
MOVE TEXT-DUP TO PRINT_CO-DRTXT.
ENDIF.
* get destination
USE_DEFAULT = 'X'. " default destination in 1st run
LOOP AT DESTINATION_TAB.
PR_OPTIONS-TDDEST = DESTINATION_TAB-DEST.
* call OPEN_FORM to open formular
PERFORM PPPR_OPEN_FORM USING 'MAIN'.
* Print split tickets
PERFORM SPLIT_TICKET USING PRINT_CO-USE_WCP
DESTINATION_TAB-DEST
USE_DEFAULT.
* call CLOSE_FORM to finish formular
PERFORM PPPR_CLOSE_FORM.
CLEAR USE_DEFAULT. " default destination only in 1st run
ENDLOOP.
ENDDO.
ENDFORM.
*---------------------------------------------------------------------*
* FORM SPLIT_TICKET
*
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM SPLIT_TICKET USING USE_WCP LIKE T496P-USE_WCP
DESTINATION LIKE T496P-DRDEST
USE_DEFAULT.
DATA: COUNTER_ABS(4) TYPE N.
DATA: NUMBER_OF_TICKETS(4) TYPE N.
DATA: BEGIN OF B OCCURS 0.
INCLUDE STRUCTURE KBEDP.
DATA: END OF B.
DATA: BEGIN OF A.
INCLUDE STRUCTURE AFVGD.
DATA: END OF A.
DATA FLG_ACT_READ.

CLEAR COUNTER_ABS.
LOOP AT ITAB_TDR WHERE OBJECT = OBJ-POS
OR OBJECT = OBJ-SOP
AND AUFNR = ITAB_ORD-AUFNR.
* Save ITAB of operation
ITAB_VRG = ITAB_TDR.
* Get sequence (only if changed)
IF ITAB_VRG-APLFL NE AFFLD-PLNFL OR ITAB_VRG-AUFNR NE AFFLD-AUFNR.
READ TABLE AFFLD_TAB INDEX ITAB_TDR-INDEX_PLFL.
AFFLD = AFFLD_TAB.
PERFORM PPPR_GET_TABLES USING DRPART-SEQ.
ENDIF.
* initialize operation
PERFORM PPPR_STD_INIT_OPERATION
USING X_FIELD SPACE CONST-FLG_YES SPACE.
CHECK NOT X_FIELD IS INITIAL.
* output only for work center printer
CHECK USE_WCP IS INITIAL "no use of wcp
OR DESTINATION = AFVGD-PDEST "wcp requested
OR ( AFVGD-PDEST IS INITIAL "if wcp not given ...
AND NOT USE_DEFAULT IS INITIAL ). "... use default printer

CLEAR FLG_ACT_READ.
READ TABLE KBEDP_TAB
WITH KEY BEDID = AFVGD-BEDID
BEDZL = AFVGD-BEDZL
BINARY SEARCH TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
LOOP AT KBEDP_TAB FROM SY-TABIX.
IF KBEDP_TAB-BEDID <> AFVGD-BEDID
OR KBEDP_TAB-BEDZL <> AFVGD-BEDZL.
EXIT.
ENDIF.
KBEDP = KBEDP_TAB.
MOVE-CORRESPONDING KBEDP TO A.
* calculation of the activities using the operation-formalism
perform get_activity(saplcodr)
using a
rcr01
ttl_activ
afvgd-mgvrg
caufvd.
ADD 1 TO COUNTER_ABS.
* check wether number of tickets on page greater than possible
IF NOT PRINT_CO-AZABS IS INITIAL.
IF COUNTER_ABS > PRINT_CO-AZABS.
* CALL FUNCTION 'CONTROL_FORM'
* EXPORTING
* COMMAND = 'NEW-PAGE'.
CLEAR COUNTER_ABS.
ADD 1 TO COUNTER_ABS.
ENDIF.
ENDIF.
ENDLOOP.
* no kbeds found
ELSE.
* calculation of the activities using the operation-formalism
perform get_activity(saplcodr)
using afvgd
rcr01
ttl_activ
afvgd-mgvrg
caufvd.
IF AFVGD-SPANZ = 0.
AFVGD-SPANZ = 1.
ENDIF.
DO AFVGD-SPANZ TIMES.
KBEDP-SPLIT = SY-INDEX.
ADD 1 TO COUNTER_ABS.
* check wether number of tickets on page greater than possible
IF NOT PRINT_CO-AZABS IS INITIAL.
IF COUNTER_ABS > PRINT_CO-AZABS.
* CALL FUNCTION 'CONTROL_FORM'
* EXPORTING
* COMMAND = 'NEW-PAGE'.
CLEAR COUNTER_ABS.
ADD 1 TO COUNTER_ABS.
ENDIF.
ENDIF.
ENDDO.
ENDIF.
ENDLOOP.


data: i type i value '0',
cnt type i value '0'.
DESCRIBE TABLE it LINES cnt.

loop at it.
i = i + 1.
cnt = cnt - 1.
if ( i = 1 ).
F1 = IT-F1. F2 = IT-F2. F3 = IT-F3. F4 = IT-F4.
F5 = IT-F5. F6 = IT-F6. F7 = IT-F7. F8 = IT-F8.
F9 = IT-F9. F10 = IT-F10. F11 = IT-F11. F16 = IT-F16.
F18 = IT-F18. F19 = IT-F19.
ZMAKTX = IT-ZMAKTX.

*IT-ZMAKTX.
else.
F1A = IT-F1. F2A = IT-F2. F3A = IT-F3. F4A = IT-F4.
F5A = IT-F5. F6A = IT-F6. F7A = IT-F7. F8A = IT-F8.
F9A = IT-F9. F10A = IT-F10. F11A = IT-F11. F16A = IT-F16.
F18A = IT-F18. F19A = IT-F19.
ZMAKTXa = IT-ZMAKTX.



*IT-ZMAKTX.

i = 0.
endif.

if ( ( i <> 1 ) or ( i = 1 and cnt = 0 ) ).
* CALL FUNCTION 'END_FORM'.
CALL FUNCTION 'START_FORM'
EXPORTING
FORM = ' '
.

if ( i = 1 ).
call function 'WRITE_FORM'
exporting element = 'FORM2'
window = 'WINDOW96'.
endif.

call function 'WRITE_FORM'
exporting element = '&END&'
window = 'MAIN'.

CALL FUNCTION 'END_FORM'.

F1A = ''. F2A = ''. F3A = ''. F4A = ''. F5A = ''.
F6A = ''. F7A = ''. F8A = ''. F9A = ''. F10A = ''.
F11A = ''.
ZMAKTXa = ''.
endif.

endloop.


ENDFORM.

*----------------------------------------------------------------------
*
* INCLUDE CODRIF02
*
*----------------------------------------------------------------------
*
*---------------------------------------------------------------------*
* FORM OPEN_AND_START_FORM *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM PPPR_OPEN_FORM USING STARTPAGE.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
DEVICE = 'PRINTER'
DIALOG = SPACE
FORM = PRINT_CO-FORML
LANGUAGE = PRINT_CO-SPRAS
OPTIONS = PR_OPTIONS
EXCEPTIONS
CANCELED = 01
DEVICE = 02
FORM = 03
OPTIONS = 04
UNCLOSED = 05.
* CALL FUNCTION 'START_FORM'
* EXPORTING
* STARTPAGE = STARTPAGE
* .
CLEAR FLG_MAIN_STARTED.
ENDFORM.
*---------------------------------------------------------------------*
* FORM CLOSE_AND_END_FORM_FORM *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM PPPR_CLOSE_FORM.
IF NOT FLG_MAIN_STARTED IS INITIAL.
* CALL FUNCTION 'WRITE_FORM'
* EXPORTING
* ELEMENT = 'MAIN_FINISH'
* WINDOW = 'MAIN'.
ENDIF.
* CALL FUNCTION 'END_FORM'.
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT = PR_RESULT
EXCEPTIONS
OTHERS = 01.
ENDFORM.
*---------------------------------------------------------------------*
* FORM CLOSE_AND_END_FORM_FORM *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM PPPR_MAIN_START.
IF FLG_MAIN_STARTED IS INITIAL.
* CALL FUNCTION 'WRITE_FORM'
* EXPORTING
* ELEMENT = 'MAIN_START'
* WINDOW = 'MAIN'.
FLG_MAIN_STARTED = CONST-FLG_YES.
ENDIF.
ENDFORM.

* INCLUDE for ATAB-Table-Read
INCLUDE CODRGETT. "PPPR-Form-Routinen: pppr_get_tables
INCLUDE CODRIF01. "PPPR-Form-Routinen: Druck-Parts lesen
*INCLUDE CODRIF02. "PPPR-Form-Routinen: Open/Close Form
INCLUDE CODRIF04. "PPPR-Form-Routinen: read_mat
INCLUDE CODRIF17. "PSFC-Form-Routinen: std_init_operation
INCLUDE CODRIF20. "PSFC-Form-Routinen: ppr_collect_destinations


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB