SAPфорум.RU https://www.sapboard.ru/forum/ |
|
Создание FI-документа в отладчике https://www.sapboard.ru/forum/viewtopic.php?f=5&t=99528 |
Страница 1 из 1 |
Автор: | Елена НН [ Вт, май 04 2021, 19:07 ] |
Заголовок сообщения: | Создание FI-документа в отладчике |
Добрый день! Помогите, пожалуйста, создать документ с проводкой Д-т 91-02-200-289 К-т 41-51-010-000 в отладчике. Эта проводка для примера. Нужна помощь как создавать документы в отладчике. Спасибо. |
Автор: | DED_MOROZ [ Ср, май 05 2021, 13:17 ] |
Заголовок сообщения: | Re: Создание документа в отладчике. |
Транзакция 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' |
Автор: | Елена НН [ Ср, май 05 2021, 15:38 ] |
Заголовок сообщения: | Re: Создание документа в отладчике. |
Добрый день! Спасибо, изучила материал, но для меня это китайская грамота). Может есть как-то более доступное пояснение как создать документ. Спасибо! |
Автор: | darkduck [ Ср, май 05 2021, 15:40 ] |
Заголовок сообщения: | Re: Создание документа в отладчике. |
Может, есть инструкция как на коленке собрать атомную бомбу? А то эти ваши инструкции по обогащению урана и мерам предосторожности для меня - китайская грамота. |
Автор: | Елена НН [ Ср, май 05 2021, 15:43 ] |
Заголовок сообщения: | Re: Создание документа в отладчике. |
Спасибо. Очень полезная информация... |
Автор: | Yozhhhhh [ Чт, май 06 2021, 11:59 ] |
Заголовок сообщения: | Re: Создание документа в отладчике. |
Если BAPI сложно, можете попробовать posting_inferface_document. На мой взгляд, эта технология существенно проще для понимания, но и там надо как бы слегка подумать и ознакомиться с предметом. Это упрощенный батч инпут без имен экранов с очень сильно разгруженной структурой полей. |
Автор: | Елена НН [ Пт, май 07 2021, 10:28 ] |
Заголовок сообщения: | Re: Создание документа в отладчике. |
Добрый день! Спасибо!!! |
Автор: | Plank [ Вс, май 09 2021, 03:32 ] |
Заголовок сообщения: | Re: Создание документа в отладчике. |
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, номер созданного документа и текст сообщения. Не забудьте сделать настройки, которые описаны в начале макроса. |
Автор: | Елена НН [ Вт, май 11 2021, 16:03 ] |
Заголовок сообщения: | Re: Создание FI-документа в отладчике |
Добрый день! Большое спасибо! |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |