Текущее время: Ср, май 12 2021, 17:48

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Создание FI-документа в отладчике
СообщениеДобавлено: Вт, май 04 2021, 19:07 
Начинающий
Начинающий

Зарегистрирован:
Вт, май 04 2021, 17:12
Сообщения: 6
Добрый день!

Помогите, пожалуйста, создать документ с проводкой Д-т 91-02-200-289 К-т 41-51-010-000 в отладчике. Эта проводка для примера. Нужна помощь как создавать документы в отладчике.

Спасибо.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание документа в отладчике.  Тема решена
СообщениеДобавлено: Ср, май 05 2021, 13:17 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1468
Откуда: Москва, Минск
Пол: Мужской
Транзакция SE37
Использовать последовательность функциональных модулей(ФМ):
1) BAPI_ACC_DOCUMENT_POST
2) BAPI_TRANSACTION_COMMIT

Образец заполнения данных для BAPI_ACC_DOCUMENT_POST по ссылке:

https://answers.sap.com/questions/7296168/how-to-create-an-fi-document-using-a-bapi.html

ФМ BAPI_TRANSACTION_COMMIT запускать с параметром WAIT = 'X'

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание документа в отладчике.
СообщениеДобавлено: Ср, май 05 2021, 15:38 
Начинающий
Начинающий

Зарегистрирован:
Вт, май 04 2021, 17:12
Сообщения: 6
Добрый день!
Спасибо, изучила материал, но для меня это китайская грамота). Может есть как-то более доступное пояснение как создать документ.
Спасибо!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание документа в отладчике.
СообщениеДобавлено: Ср, май 05 2021, 15:40 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пт, июл 08 2005, 13:07
Сообщения: 5254
Откуда: Cyprus
Пол: Мужской
Может, есть инструкция как на коленке собрать атомную бомбу? А то эти ваши инструкции по обогащению урана и мерам предосторожности для меня - китайская грамота.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание документа в отладчике.
СообщениеДобавлено: Ср, май 05 2021, 15:43 
Начинающий
Начинающий

Зарегистрирован:
Вт, май 04 2021, 17:12
Сообщения: 6
Спасибо. Очень полезная информация...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание документа в отладчике.
СообщениеДобавлено: Чт, май 06 2021, 11:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, фев 21 2007, 08:50
Сообщения: 1366
Откуда: Пермь
Пол: Мужской
Если BAPI сложно, можете попробовать posting_inferface_document.
На мой взгляд, эта технология существенно проще для понимания, но и там надо как бы слегка подумать и ознакомиться с предметом.
Это упрощенный батч инпут без имен экранов с очень сильно разгруженной структурой полей.

_________________
Bück Dich


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание документа в отладчике.
СообщениеДобавлено: Пт, май 07 2021, 10:28 
Начинающий
Начинающий

Зарегистрирован:
Вт, май 04 2021, 17:12
Сообщения: 6
Добрый день!
Спасибо!!!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание документа в отладчике.
СообщениеДобавлено: Вс, май 09 2021, 03:32 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, фев 01 2006, 16:49
Сообщения: 1958
Откуда: Питерский Москвич
Пол: Мужской
DED_MOROZ написал:
Транзакция SE37
Использовать последовательность функциональных модулей(ФМ):
Упростим решение, есть макрос, который постит проводки из excel.
Собственно таблица в excel
Code:
Posting Date   Reverse Date   Doc. Type   Header Text   Doc. Curr.   Period   GL Account Debit   GL Account Credit   Supplier   Tax Code   SGL code.    Amount   Profit Center   Cost Center   Item Text   Document Key   Reversal Document Key   Error Message
31.12.2016      KR   Header Text   RUB   12   3101010100      MIAS01         600,00      MIAS03   Item Text         

Далее делаете кнопку "Провести в SAP" для вызова макроса
Code:
'Import ActiveX using Tools -> References -> Browse:
' -> C:\Program Files\SAP\FrontEnd\SAPgui\Unicode\wdtfuncU.ocx
' -> C:\Program Files\SAP\FrontEnd\SAPgui\Unicode\wdtaocxU.ocx
' -> C:\Program Files\SAP\FrontEnd\SAPgui\Unicode\wdtlogU.ocx

Option Explicit
Private LogonControl As SAPLogonCtrl.SAPLogonControl
Private R3Connection As SAPLogonCtrl.Connection
Private TableFactory As SAPTableFactory
Private objBAPIControl As Object
Private objBAPICommit, objBAPIRollback, objBAPICommitWait As Object
Private Functions As SAPFunctionsOCX.SAPFunctions
Private objBAPIAccDocumentPost As Object
Private objBAPIAccDocumentReverse As Object
Private objAccountGL As SAPTableFactoryCtrl.Table
Private objAccountReceivable As SAPTableFactoryCtrl.Table
Private objAccountPayable As SAPTableFactoryCtrl.Table
Private objCurrencyAmount As SAPTableFactoryCtrl.Table
Private objReturnMsg As SAPTableFactoryCtrl.Table
Private objDocumentHeader As Object
Private objDocType As Object
Private objDocKey As Object
Private objDocSys As Object
Private objReversalHeader As Object
Private objReversalDocType As Object
Private objReversalDocKey As Object
Private objReversalDocSys As Object
Private objReversalReturnMsg As SAPTableFactoryCtrl.Table
Private Const colPostingDate As Integer = 1
Private Const colReverseDate As Integer = 2
Private Const colDocumentType As Integer = 3
Private Const colDocumentHeader As Integer = 4
Private Const colDocumentCurrency As Integer = 5
Private Const colDocumentSpecPeriod As Integer = 6
Private Const colGLAccountDebit As Integer = 7
Private Const colGLAccountCredit As Integer = 8
Private Const colSupplier As Integer = 9
Private Const colSupplierTaxCode As Integer = 10
Private Const colSupplierSGL As Integer = 11
Private Const colAmount As Integer = 12
Private Const colProfitCenter As Integer = 13
Private Const colCostCenter As Integer = 14
Private Const colItemText As Integer = 15
Private Const colDocumentKey As Integer = 16
Private Const colReversalDocumentKey As Integer = 17
Private Const colErrorMessage As Integer = 18

Sub Button1_Click()

    Call main

End Sub

Private Sub SAPLogon()

    Dim retcd        As Boolean
    Dim SilentLogon  As Boolean

    Set LogonControl = CreateObject("SAP.LogonControl.1")
    Set R3Connection = LogonControl.NewConnection

    R3Connection.Client = "777" ' !! Ваш мандант !!
    R3Connection.ApplicationServer = "192.168.1.58" ' !! Ваш хост !!
    R3Connection.Language = "RU" ' !! Ваш язык !!
    R3Connection.User = "Plank" ' !! Ваш пользователь !!
    R3Connection.Password = "" ' !! Ваш пароль !!
    R3Connection.System = "H79" ' !! Ваш SAP SID !!
    R3Connection.SystemNumber = "00" ' !! Ваша инстанция !!
    R3Connection.UseSAPLogonIni = False 'True

    SilentLogon = False

    retcd = R3Connection.Logon(0, SilentLogon)

    If retcd <> True Then MsgBox "Logon failed": End

    Set objBAPIControl = CreateObject("SAP.Functions")
   
    objBAPIControl.Connection = R3Connection
       
    Set objBAPICommit = objBAPIControl.Add("BAPI_TRANSACTION_COMMIT")
    Set objBAPIRollback = objBAPIControl.Add("BAPI_TRANSACTION_ROLLBACK")
   
    Set objBAPICommitWait = objBAPICommit.Exports("WAIT")
   
    objBAPICommitWait.Value = "X"
   
' Direct postings BAPI object links:
    Set objBAPIAccDocumentPost = objBAPIControl.Add("BAPI_ACC_DOCUMENT_POST")
   
    Set objDocumentHeader = objBAPIAccDocumentPost.Exports("DOCUMENTHEADER")

    Set objAccountGL = objBAPIAccDocumentPost.Tables("ACCOUNTGL")
    Set objAccountPayable = objBAPIAccDocumentPost.Tables("ACCOUNTPAYABLE")
    Set objCurrencyAmount = objBAPIAccDocumentPost.Tables("CURRENCYAMOUNT")
    Set objReturnMsg = objBAPIAccDocumentPost.Tables("RETURN")
   
    Set objDocType = objBAPIAccDocumentPost.Imports("OBJ_TYPE")
    Set objDocKey = objBAPIAccDocumentPost.Imports("OBJ_KEY")
    Set objDocSys = objBAPIAccDocumentPost.Imports("OBJ_SYS")
       
'    objAccountGL.Rows.Add
'    objAccountPayable.Rows.Add
    objCurrencyAmount.Rows.Add
    objCurrencyAmount.Rows.Add
   
' Reversal BAPI object links:
    Set objBAPIAccDocumentReverse = objBAPIControl.Add("BAPI_ACC_DOCUMENT_REV_POST")
   
    Set objReversalHeader = objBAPIAccDocumentReverse.Exports("REVERSAL")
   
    Set objReversalDocType = objBAPIAccDocumentReverse.Imports("OBJ_TYPE")
    Set objReversalDocKey = objBAPIAccDocumentReverse.Imports("OBJ_KEY")
    Set objReversalDocSys = objBAPIAccDocumentReverse.Imports("OBJ_SYS")
   
    Set objReversalReturnMsg = objBAPIAccDocumentReverse.Tables("RETURN")
   
End Sub

Private Sub PostSingleDocument(sheet_row As Integer)

    Dim index_msg As Integer
   
    objAccountGL.FreeTable
    objAccountPayable.FreeTable
'    objCurrencyAmount.FreeTable
   
    objDocumentHeader.Value("USERNAME") = R3Connection.User

    objDocumentHeader.Value("COMP_CODE") = "MIAS" ' !! Ваша БЕ !!

    objDocumentHeader.Value("DOC_DATE") = ActiveSheet.Cells(sheet_row, colPostingDate)
    objDocumentHeader.Value("PSTNG_DATE") = ActiveSheet.Cells(sheet_row, colPostingDate)
    objDocumentHeader.Value("DOC_TYPE") = ActiveSheet.Cells(sheet_row, colDocumentType)
    objDocumentHeader.Value("HEADER_TXT") = ActiveSheet.Cells(sheet_row, colDocumentHeader)
    objDocumentHeader.Value("FIS_PERIOD") = ActiveSheet.Cells(sheet_row, colDocumentSpecPeriod)
   
'   Debit side
    objAccountGL.Rows.Add
    objAccountGL.Value(1, "ITEMNO_ACC") = "0000000001"
    objAccountGL.Value(1, "GL_ACCOUNT") = Format(ActiveSheet.Cells(sheet_row, colGLAccountDebit), "0000000000") '"0000501001"
    objAccountGL.Value(1, "COSTCENTER") = ActiveSheet.Cells(sheet_row, colCostCenter) '"MIAS03"
    objAccountGL.Value(1, "TAX_CODE") = ActiveSheet.Cells(sheet_row, colSupplierTaxCode)
    objAccountGL.Value(1, "PROFIT_CTR") = ActiveSheet.Cells(sheet_row, colProfitCenter)
    objAccountGL.Value(1, "ITEM_TEXT") = ActiveSheet.Cells(sheet_row, colItemText)
   
'   Credit side
    If ActiveSheet.Cells(sheet_row, colGLAccountCredit) <> "" Then
        objAccountGL.Rows.Add
        objAccountGL.Value(2, "ITEMNO_ACC") = "0000000002"
        objAccountGL.Value(2, "GL_ACCOUNT") = Format(ActiveSheet.Cells(sheet_row, colGLAccountCredit), "0000000000") '"0000501001"
        objAccountGL.Value(2, "COSTCENTER") = ActiveSheet.Cells(sheet_row, colCostCenter) '"MIAS03"
        objAccountGL.Value(2, "TAX_CODE") = ActiveSheet.Cells(sheet_row, colSupplierTaxCode)
        objAccountGL.Value(2, "PROFIT_CTR") = ActiveSheet.Cells(sheet_row, colProfitCenter)
        objAccountGL.Value(2, "ITEM_TEXT") = ActiveSheet.Cells(sheet_row, colItemText)
    ElseIf ActiveSheet.Cells(sheet_row, colSupplier) <> "" Then
        objAccountPayable.Rows.Add
        objAccountPayable.Value(1, "ITEMNO_ACC") = "0000000002"
        objAccountPayable.Value(1, "VENDOR_NO") = ActiveSheet.Cells(sheet_row, colSupplier) '"1000000000"
        objAccountPayable.Value(1, "SP_GL_IND") = ActiveSheet.Cells(sheet_row, colSupplierSGL)
        objAccountPayable.Value(1, "TAX_CODE") = ActiveSheet.Cells(sheet_row, colSupplierTaxCode)
        objAccountPayable.Value(1, "PROFIT_CTR") = ActiveSheet.Cells(sheet_row, colProfitCenter)
        objAccountPayable.Value(1, "ITEM_TEXT") = ActiveSheet.Cells(sheet_row, colItemText)
    End If
   
'   Currencies
'   objCurrencyAmount.Rows.Add
    objCurrencyAmount.Value(1, "ITEMNO_ACC") = "0000000001"
    objCurrencyAmount.Value(1, "CURRENCY") = ActiveSheet.Cells(sheet_row, colDocumentCurrency)
    objCurrencyAmount.Value(1, "AMT_DOCCUR") = CDec(ActiveSheet.Cells(sheet_row, colAmount))
'   objCurrencyAmount.Rows.Add
    objCurrencyAmount.Value(2, "ITEMNO_ACC") = "0000000002"
    objCurrencyAmount.Value(2, "CURRENCY") = ActiveSheet.Cells(sheet_row, colDocumentCurrency)
    objCurrencyAmount.Value(2, "AMT_DOCCUR") = -(CDec(ActiveSheet.Cells(sheet_row, colAmount)))
   
    If objBAPIAccDocumentPost.Call Then
   
        For index_msg = 1 To objReturnMsg.Rows.Count
            ActiveSheet.Cells(sheet_row, colErrorMessage) = objReturnMsg.Value(index_msg, "MESSAGE")
            If index_msg > 1 Then Exit For
        Next index_msg
       
        If objDocKey.Value <> "$" Then
   
            If objBAPICommit.Call Then
           
                ActiveSheet.Cells(sheet_row, colDocumentKey) = CStr(objDocKey.Value)
               
                If ActiveSheet.Cells(sheet_row, colReverseDate) <> "" Then
       
                    objReversalHeader.Value("OBJ_TYPE") = objDocType.Value
                    objReversalHeader.Value("OBJ_KEY_R") = objDocKey.Value
                    objReversalHeader.Value("OBJ_SYS") = objDocSys.Value

                    objReversalHeader.Value("COMP_CODE") = "MIAS" ' !! Ваша БЕ !!

                    objReversalHeader.Value("PSTNG_DATE") = ActiveSheet.Cells(sheet_row, colReverseDate)

                    If objBAPIAccDocumentReverse.Call Then
   
                        For index_msg = 1 To objReversalReturnMsg.Rows.Count
                            ActiveSheet.Cells(sheet_row, colErrorMessage) = objReversalReturnMsg.Value(index_msg, "MESSAGE")
                            If index_msg > 1 Then Exit For
                        Next index_msg
       
                        If objReversalDocKey.Value <> "$" Then
               
                            If objBAPICommit.Call Then
                                ActiveSheet.Cells(sheet_row, colReversalDocumentKey) = CStr(objReversalDocKey.Value)
                            End If 'objBAPICommit.Call

                        End If ' objReversalDocKey.Value <> "$"
               
                    End If ' objBAPIAccDocumentReverse.Call
           
                End If ' ActiveSheet.Cells(sheet_row, 2) <> ""
           
            End If 'objBAPICommit.Call
               
        End If
       
    End If
   
    objBAPIRollback.Call
           
End Sub

Private Sub SAPLogoff()

    R3Connection.Logoff

End Sub

Private Sub main()
   
    Dim index_row As Integer

    Call SAPLogon

    index_row = 2
   
    Do While ActiveSheet.Cells(index_row, colPostingDate) <> ""
   
        If ActiveSheet.Cells(index_row, colDocumentKey) = "" And _
           ActiveSheet.Cells(index_row, colReversalDocumentKey) = "" Then
            Call PostSingleDocument(index_row)
        End If
   
        index_row = index_row + 1
       
    Loop
   
    Call SAPLogoff
   
End Sub

В полях Document Key и Error Message будет то, что вернет SAP, номер созданного документа и текст сообщения.
Не забудьте сделать настройки, которые описаны в начале макроса.

_________________
Цифровая трансформация в массы - использую S/4 HANA на домашнем сервере для семейной бухгалтерии...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание FI-документа в отладчике
СообщениеДобавлено: Вт, май 11 2021, 16:03 
Начинающий
Начинающий

Зарегистрирован:
Вт, май 04 2021, 17:12
Сообщения: 6
Добрый день!
Большое спасибо!


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

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


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

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


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

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