SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Передача данных в транзакцию



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
musicman
Участник
Участник



Joined: 03 Oct 2008
Posts: 4

PostPosted: Fri Oct 03, 2008 7:06 pm    Post subject: Передача данных в транзакцию Reply with quote

Привет всем. Абап ковыряю сравнительно недавно. Столкнулся с трудностью. Пишу прогу для проведения ремонтов, так как имеющаюся в САПе 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. Понять пока не могу, так как не знаю толком механизма работы транзакции и передачи данных для её успешной отработки. Выручите, люди добрые...
Back to top
View user's profile Send private message
musicman
Участник
Участник



Joined: 03 Oct 2008
Posts: 4

PostPosted: Fri Oct 03, 2008 7:09 pm    Post subject: Reply with quote

Да, забыл указать код форм:
Code:
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.
Back to top
View user's profile Send private message
XXX_:)
Аналитик
Аналитик


Age: 41
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Mon Oct 06, 2008 9:50 am    Post subject: Reply with quote

а какого рода ошибка? пожалуйста поподробнее. и текст ошибки приведите пожалуйста.
_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
musicman
Участник
Участник



Joined: 03 Oct 2008
Posts: 4

PostPosted: Mon Oct 06, 2008 10:53 am    Post subject: Reply with quote

Ошибка запихиваеттся в табличку 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 никак не могу, перерыл всё, но увы...
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Oct 06, 2008 12:50 pm    Post subject: Reply with quote

Сообщение об ошибке можно посмотреть в транзакции SE91:
Класс сообщения - 00
Номер сообщения - 343

и гласит это сообщение следующее:
Поле курсора &1&2 отсутствует на экране.
Уберите из кода строчки
Code:

perform bdc_field       using 'BDC_CURSOR'
                              'COBL-ANLN1'.                 "n.783199


и эта ошибка исчезнет.

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
musicman
Участник
Участник



Joined: 03 Oct 2008
Posts: 4

PostPosted: Mon Oct 06, 2008 2:48 pm    Post subject: Reply with quote

Ай, спасибки, всё заработало!!! И особо спасибо за se91!!! Very Happy Теперь уж я заживу!!!
P.S.
А ведь код взят из официальной проги и такая лажа!!! Впрочем там вся прога одна сплошная лажа, потому и пришлось всё полностью переписывать
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.