You just have to call the codeunit passing the journal record filled with the payment data. Here's a very rough example:
OBJECT Codeunit 50000 VendorPaymentWS
{
OBJECT-PROPERTIES
{
Date=04/28/14;
Time=[ 3:46:13 PM];
Modified=Yes;
Version List=;
}
PROPERTIES
{
OnRun=BEGIN
END;
}
CODE
{
PROCEDURE CreateAndPostPayment@1000000000(pVendorNo@1000000000 : Code[20];pPaymAmount@1000000001 : Decimal;pPostingDate@1000000002 : Date;pDocNo@1000000003 : Code[20];pApplToDocType@1000000007 : ' ,Payment,Invoice,Credit Memo,Finance Charge Memo,Reminder,Refund';pApplToDocNo@1000000008 : Code[20]);
VAR
GenJnlLine@1000000004 : Record 81;
LineNo@1000000005 : Integer;
GenJnlPostLine@1000000006 : Codeunit 12;
BEGIN
GenJnlLine.SETRANGE("Journal Template Name",'PAYMENT');
GenJnlLine.SETRANGE("Journal Batch Name",'GENERAL');
IF GenJnlLine.FINDLAST THEN
LineNo := GenJnlLine."Line No." + 10000
ELSE
LineNo := 10000;
GenJnlLine.INIT;
GenJnlLine."Journal Template Name" := 'PAYMENT'; //Fill with journal used for payments
GenJnlLine."Journal Batch Name" := 'GENERAL'; //Fill with journal used for payments
GenJnlLine."Line No." := LineNo;
GenJnlLine.VALIDATE("Account Type",GenJnlLine."Account Type"::Vendor);
GenJnlLine.VALIDATE("Account No.",pVendorNo);
GenJnlLine.VALIDATE(Amount,pPaymAmount);
GenJnlLine.VALIDATE("Posting Date",pPostingDate);
GenJnlLine.VALIDATE("Document No.",pDocNo);
GenJnlLine.VALIDATE("Bal. Account Type",GenJnlLine."Bal. Account Type"::"Bank Account"); //Fill an appropriate bal. account
GenJnlLine.VALIDATE("Bal. Account No.",'001'); //Fill an appropriate bal. account
GenJnlLine.VALIDATE("Applies-to Doc. Type",pApplToDocType);
GenJnlLine.VALIDATE("Applies-to Doc. No.",pApplToDocNo);
GenJnlLine.INSERT;
GenJnlPostLine.RUN(GenJnlLine);
END;
BEGIN
END.
}
}