Posted: Fri Oct 03, 2008 7:06 pm Post subject: Передача данных в транзакцию
Привет всем. Абап ковыряю сравнительно недавно. Столкнулся с трудностью. Пишу прогу для проведения ремонтов, так как имеющаюся в САПе J_1UF_MAJOR_REPAIR (Укр. аддон) не работает. В проге вызывается транзакция F-02 с передачей параметров для росуществления проводок. Я пока ещё до конца не понял механизм передачи данных и потому взял код из J_1UF_MAJOR_REPAIR надеясь что код писался проффи и будет работать, однако фигу!!! Происходит ошибка при отработке транзацкии. Привожу ниже код, может кто-то сможет понять что не так передаётся в транзакцию.
Code:
DATA P_XBLNR LIKE BKPF-XBLNR.
DATA P_BKTXT LIKE BKPF-BKTXT.
CONCATENATE P_ANLN1 P_ANLN2 INTO P_XBLNR.
REFRESH BDC_TAB.
perform bdc_dynpro using 'SAPMF05A' '0100'."Ïåðâûé ýêðàí
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWKO'.
perform bdc_field using 'BKPF-BLDAT'"Äàòà äîêóìåíòà
ZDATEZTR. "Äàòà ïðîâîäêè èç ïîëÿ âûáîðà
perform bdc_field using 'BKPF-BLART'"Âèä äîêóìåíòà
'SA'.
perform bdc_field using 'BKPF-BUDAT'"Äàòà ïðîâîäêè
ZDATEZTR.
PERFORM BDC_FIELD USING 'BKPF-XBLNR'"Ññûëî÷íûé íîìåð äîêóìåíòà
P_XBLNR. "Êîìáèíàöèÿ èç íîìåðà è ñóáíîìåðà ÎÑ
P_BKTXT = TEXT-033.
P_BKTXT = P_AUFNR. "n.783199
WRITE P_DATEREP TO P_BKTXT+13 DD/MM/YYYY.
PERFORM BDC_FIELD USING 'BKPF-BKTXT'"Çàãîëîâîê äîêóìåíòà èç ¹ çàêàçà è äàòû çàêàçà
P_BKTXT.
perform bdc_field using 'RF05A-NEWBS'"Êîä ïðîâîäêè ïî äåáåòó (40)
BSCHLDEB.
perform bdc_field using 'RF05A-NEWKO'"Ñ÷åò çàòðàò (Ñ÷åò èëè êîä ïîèñêà äëÿ ñëåäóþùåé ïîçèöèè)'R410K100'
ACCZATR.
perform bdc_dynpro using 'SAPMF05A' '0300'."Ñëåäóþùèé ýêðàí
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWKO'.
perform bdc_field using 'BSEG-WRBTR'"Ñóììà íà ïðîâîäêó
P_SUMMA.
perform bdc_field using 'BKPF-XMWST'"Ñíèìàåì ãàëî÷êó àâòîìàòè÷åñêîãî ðàñ÷¸òà íàëîãà
''.
perform bdc_field using 'RF05A-NEWBS'"Êîä ïðîâîäêè äëÿ ñëåäóþùåé ïîçèöèè
BSCHLKRE. "'50'."Êîä ïðîâîäêè ïî êðåäèòó
perform bdc_field using 'RF05A-NEWKO'"'R9999999'."Âñïîìîãàòåëüíûé ñ÷åò
ACCVSPOM.
perform bdc_field using 'BDC_SUBSCR'"
'SAPLKACB'
& ' 0001BLOCK'.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'BDC_CURSOR'
'COBL-ANLN1'. "n.783199
* 'COBL-GSBER'. "n.783199
perform bdc_field using 'BDC_SUBSCR'
'SAPLKACB'
& ' 0003BLOCK1'.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-WRBTR'.
perform bdc_field using 'BSEG-WRBTR'
P_SUMMA.
perform bdc_field using 'BKPF-XMWST'
''.
perform bdc_field using 'BDC_SUBSCR'
'SAPLKACB'
& ' 0001BLOCK'.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'BDC_CURSOR'
'COBL-ANLN1'. "n.783199
* 'COBL-GSBER'. "n.783199
perform bdc_field using 'BDC_SUBSCR'
'SAPLKACB'
& ' 0003BLOCK1'.
CALL TRANSACTION 'F-02'
USING BDC_TAB
mode ctumode
update cupdate
messages into messtab.
Этот код из проги 1UF_MJR_FORMS. При просмотре таблицы с ошибками видна запись о том что что-то не так с SAPLKACB и полем COBL-ANLN1. Понять пока не могу, так как не знаю толком механизма работы транзакции и передачи данных для её успешной отработки. Выручите, люди добрые...
FORM BDC_FIELD USING F_NAME F_VALUE.
DATA: F_TYPE,
DCPFM.
CLEAR BDC_TAB.
MOVE F_NAME TO BDC_TAB-FNAM.
IF NOT F_VALUE IS INITIAL.
DESCRIBE FIELD F_VALUE TYPE F_TYPE.
IF F_TYPE = 'I' OR F_TYPE = 'N' OR F_TYPE = 'P'.
WRITE F_VALUE TO BDC_TAB-FVAL LEFT-JUSTIFIED.
SELECT SINGLE DCPFM INTO (DCPFM) FROM USR01 WHERE BNAME = SY-UNAME.
CASE DCPFM.
WHEN SPACE. TRANSLATE BDC_TAB-FVAL USING '. '.
WHEN 'X'. TRANSLATE BDC_TAB-FVAL USING ', '.
ENDCASE.
CONDENSE BDC_TAB-FVAL NO-GAPS.
ELSEIF F_TYPE = 'D'.
WRITE F_VALUE TO BDC_TAB-FVAL DD/MM/YYYY.
ELSE.
MOVE F_VALUE TO BDC_TAB-FVAL.
ENDIF.
ENDIF.
APPEND BDC_TAB.
ENDFORM.
и
Code:
FORM BDC_DYNPRO USING F_NAME F_VALUE.
CLEAR BDC_TAB.
MOVE: 'X' TO BDC_TAB-DYNBEGIN,
F_NAME TO BDC_TAB-PROGRAM,
F_VALUE TO BDC_TAB-DYNPRO.
APPEND BDC_TAB.
ENDFORM.
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Mon Oct 06, 2008 9:50 am Post subject:
а какого рода ошибка? пожалуйста поподробнее. и текст ошибки приведите пожалуйста. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Ошибка запихиваеттся в табличку MESSTAB типа BDCMSGCOLL и вот какие значения полей:
TCODE FB01 (код транзакции)
DYNNAME SAPKACB (код вызывемой проги)
DYNUMB 0002 (номер экрана)
MSGTYP S (как понял, была ошибка, но прога продолжила работу)
MSGSPRA R (язык, по ходу русский)
MSGR 343 (Номер сообщения)
MSGID 00 (ИД сообщения)
MSGV1 COBL-ANLN1 (Переменная часть сообщения)
MSGV2 . (Переменная часть сообщения)
MSGV3 SAPLKACB (Переменная часть сообщения)
MSGV4 0002 (Переменная часть сообщения)
ENV CTU (Операция по мониторингу пакетного ввода)
Похоже что неправильно переданы параметры при вызове экрана 0002 проги SAPKACB, что применяеттся при транзакции FB01, но вот узнать что это за ошибка про №343 никак не могу, перерыл всё, но увы...
Ай, спасибки, всё заработало!!! И особо спасибо за se91!!! Теперь уж я заживу!!!
P.S.
А ведь код взят из официальной проги и такая лажа!!! Впрочем там вся прога одна сплошная лажа, потому и пришлось всё полностью переписывать
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.