Skip to main content

SAP ABAP - Create Vendor Master Using VMD_EI_API

 



*&---------------------------------------------------------------------*
*& Report  ZVENDOR_CREATE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZVENDOR_CREATE.

*----------------------------------------------------------------------*
*       CLASS LCL_DATA DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_DATA DEFINITION.
  PUBLIC SECTION.
    METHODSCONSTRUCTOR
      IMPORTING
        I_CCODE TYPE BUKRS
        I_KTOKK TYPE KTOKK
        I_AKONT TYPE AKONT
        I_NAME  TYPE AD_NAME1,
      CREATE_VENDOR_DATA
        EXPORTING
          E_LIFNR TYPE LIFNR.

  PRIVATE SECTION.
    METHODSPREPARE_DATA
      RETURNING VALUE(RE_FLAGTYPE I.
*   Data Declarations
    DATAGS_VMDS_EXTERN   TYPE VMDS_EI_MAIN,
          GS_SUCC_MESSAGES TYPE CVIS_MESSAGE,
          GS_VMDS_ERROR    TYPE VMDS_EI_MAIN,
          GS_ERR_MESSAGES  TYPE CVIS_MESSAGE,
          GS_VMDS_SUCC     TYPE VMDS_EI_MAIN,
          GV_KTOKK         TYPE KTOKK,
          GV_CCODE         TYPE BUKRS,
          GV_AKONT         TYPE AKONT,
          GV_NAME          TYPE NAME1.
ENDCLASS.                    "lcl_data

*———————————————————————-*
*       CLASS lcl_data IMPLEMENTATION
*———————————————————————-*
*
*———————————————————————-*
CLASS LCL_DATA IMPLEMENTATION.

  METHOD CONSTRUCTOR.
    ME->GV_CCODE I_CCODE.
    ME->GV_KTOKK I_KTOKK.
    ME->GV_AKONT I_AKONT.
    ME->GV_NAME  I_NAME.
  ENDMETHOD.                    "constructor

  METHOD PREPARE_DATA.

*   Local Data Declaration
    DATALT_CONTACTS     TYPE VMDS_EI_CONTACTS_T,
          LS_CONTACTS     TYPE VMDS_EI_CONTACTS,
          LT_VENDORS      TYPE VMDS_EI_EXTERN_T,
          LS_VENDORS      TYPE VMDS_EI_EXTERN,
          LS_ADDRESS      TYPE CVIS_EI_ADDRESS1,
          LT_BANK         TYPE CVIS_EI_BANKDETAIL_T,
          LS_BANK         TYPE CVIS_EI_CVI_BANKDETAIL,
          LT_COMPANY      TYPE VMDS_EI_COMPANY_T,
          LS_COMPANY      TYPE VMDS_EI_COMPANY,
          LS_COMPANY_DATA TYPE VMDS_EI_VMD_COMPANY,
          LS_PURCHAS_DATA TYPE VMDS_EI_VMD_PURCHASING,
          LT_PURCHASING   TYPE VMDS_EI_PURCHASING_T,
          LS_PURCHASING   TYPE VMDS_EI_PURCHASING,
          LT_PURCH_FUNC   TYPE VMDS_EI_FUNCTIONS_T,
          LS_PURCH_FUNC   TYPE VMDS_EI_FUNCTIONS,
          LS_MESSAGE      TYPE CVIS_MESSAGE,
          LV_CONTACTID    TYPE BAPICONTACT_01-CONTACT.

    CLEAR GS_VMDS_EXTERN.
    CALL METHOD VMD_EI_API=>GET_NUMBER
      EXPORTING
        IV_KTOKK GV_KTOKK
      IMPORTING
        EV_LIFNR LS_VENDORS-HEADER-OBJECT_INSTANCE-LIFNR
        ES_ERROR LS_MESSAGE.

    LS_VENDORS-HEADER-OBJECT_TASK 'I'.   " I = Create, U = Change

    LS_ADDRESS-POSTAL-DATA-NAME            GV_NAME.
    LS_ADDRESS-POSTAL-DATA-STREET          'COBA AJA ALAMAT yes'.
    LS_ADDRESS-POSTAL-DATA-POSTL_COD1      '12345'.
    LS_ADDRESS-POSTAL-DATA-COUNTRY         'ID'.
    LS_ADDRESS-POSTAL-DATA-SORT1           GV_NAME.
    LS_ADDRESS-POSTAL-DATA-LANGU           SY-LANGU.
    LS_ADDRESS-POSTAL-DATAX-NAME           'X'.
    LS_ADDRESS-POSTAL-DATAX-STREET         'X'.
    LS_ADDRESS-POSTAL-DATAX-POSTL_COD1     'X'.
    LS_ADDRESS-POSTAL-DATAX-SORT1          'X'.
    LS_ADDRESS-POSTAL-DATAX-COUNTRY        'X'.
    LS_ADDRESS-POSTAL-DATAX-LANGU          'X'.
    LS_ADDRESS-TASK                        'I'.
    LS_VENDORS-CENTRAL_DATA-ADDRESS LS_ADDRESS.

    REFRESH LT_BANK[].
    CLEAR LS_BANK.
    LS_BANK-TASK           'I'.
    LS_BANK-DATA_KEY-BANKS 'ID'.
    LS_BANK-DATA_KEY-BANKL '000002'.
    LS_BANK-DATA_KEY-BANKN '352842132'.

    LS_BANK-DATA-KOINH     'BRI'.
    LS_BANK-DATAX-KOINH    'X'.
    APPEND LS_BANK TO LT_BANK.

    CLEAR LS_BANK.
    LS_BANK-TASK           'I'.
    LS_BANK-DATA_KEY-BANKS 'ID'.
    LS_BANK-DATA_KEY-BANKL '000003'.
    LS_BANK-DATA_KEY-BANKN '93037890'.

    LS_BANK-DATA-KOINH     'MANDIRI'.
    LS_BANK-DATAX-KOINH    'X'.
    APPEND LS_BANK TO LT_BANK.

    LS_VENDORS-CENTRAL_DATA-BANKDETAIL-BANKDETAILS LT_BANK[].

*   Contact Person
    REFRESHLT_CONTACTS[].
*    CLEAR LS_CONTACTS.
*    LS_CONTACTS-TASK = 'U'.
*    LS_CONTACTS-ADDRESS_TYPE_3-TASK = 'U'.
*
**   Specify how many Contact Person numbers are to be obtained
**   This will simply provide us a contact person number
**   NOTE: If the note 1749700 is present in the system, then the contact person number can be left empty
*    CALL FUNCTION 'BAPI_PARTNEREMPLOYEE_GETINTNUM'
*      EXPORTING
*        QUANTITY  = '1'
*      IMPORTING
*        CONTACTID = LV_CONTACTID.
*
*    LS_CONTACTS-DATA_KEY-PARNR = LV_CONTACTID.                          "Contact Person Number
**   Set the Name for Contact person
*    LS_CONTACTS-ADDRESS_TYPE_3-POSTAL-DATA-FULLNAME   = 'JOHN DOE'.
*    LS_CONTACTS-ADDRESS_TYPE_3-POSTAL-DATA-FIRSTNAME  = 'JOHN'.
*    LS_CONTACTS-ADDRESS_TYPE_3-POSTAL-DATA-LASTNAME   = 'DOE'.
*    APPEND LS_CONTACTS TO LT_CONTACTS.
*
**   Set the Contact Person details for the Vendor
*    LS_VENDORS-CENTRAL_DATA-CONTACT-CONTACTS = LT_CONTACTS[].

*   Set the Account Group
    LS_VENDORS-CENTRAL_DATA-CENTRAL-DATA-KTOKK  GV_KTOKK.
    LS_VENDORS-CENTRAL_DATA-CENTRAL-DATA-STCD1  'VAT 1'.
    LS_VENDORS-CENTRAL_DATA-CENTRAL-DATAX-KTOKK 'X'.
    LS_VENDORS-CENTRAL_DATA-CENTRAL-DATAX-STCD1 'X'.

*   Company Code and GL Account Data
    REFRESHLT_COMPANY[].
    CLEAR LS_COMPANY.
    LS_COMPANY-TASK               'I'.
    LS_COMPANY-DATA_KEY-BUKRS     GV_CCODE.
    LS_COMPANY-DATA-AKONT         GV_AKONT.
    LS_COMPANY-DATA-FDGRV         'A1'.
    LS_COMPANY-DATA-ZTERM         '0001'.
    LS_COMPANY-DATAX-AKONT        'X'.
    LS_COMPANY-DATAX-FDGRV        'X'.
    LS_COMPANY-DATAX-ZTERM        'X'.
    APPEND LS_COMPANY TO LT_COMPANY.

    CLEAR LS_COMPANY.
    LS_COMPANY-TASK               'I'.
    LS_COMPANY-DATA_KEY-BUKRS     '3000'.
    LS_COMPANY-DATA-AKONT         GV_AKONT.
    LS_COMPANY-DATA-FDGRV         'A1'.
    LS_COMPANY-DATA-ZTERM         '0001'.
    LS_COMPANY-DATAX-AKONT        'X'.
    LS_COMPANY-DATAX-FDGRV        'X'.
    LS_COMPANY-DATAX-ZTERM        'X'.
    APPEND LS_COMPANY TO LT_COMPANY.

    LS_VENDORS-COMPANY_DATA-COMPANY LT_COMPANY[].

*   Purchasing Data
    REFRESHLT_PURCHASING[],
             LT_PURCH_FUNC[].

    CLEAR LS_PURCHASING.
    LS_PURCHASING-TASK               'I'.
    LS_PURCHASING-DATA_KEY-EKORG     '3000'.
    LS_PURCHASING-DATA-KALSK         '01'.
    LS_PURCHASING-DATA-WEBRE         'X'.
    LS_PURCHASING-DATAX-KALSK        'X'.
    LS_PURCHASING-DATAX-WEBRE        'X'.
    APPEND LS_PURCHASING TO LT_PURCHASING.

    CLEAR LS_PURCHASING.
    LS_PURCHASING-TASK               'I'.
    LS_PURCHASING-DATA_KEY-EKORG     '1000'.
    LS_PURCHASING-DATA-WAERS         'IDR'.
    LS_PURCHASING-DATA-KALSK         '01'.
    LS_PURCHASING-DATA-WEBRE         'X'.
    LS_PURCHASING-DATAX-WAERS        'X'.
    LS_PURCHASING-DATAX-KALSK        'X'.
    LS_PURCHASING-DATAX-WEBRE        'X'.
    APPEND LS_PURCHASING TO LT_PURCHASING.

*    CLEAR LS_PURCH_FUNC.
*    LS_PURCH_FUNC-TASK = 'I'.
*    LS_PURCH_FUNC-DATA_KEY-PARVW    = 'BA'.
*    LS_PURCH_FUNC-DATA-PARTNER      = LS_VENDORS-HEADER-OBJECT_INSTANCE-LIFNR.
*    LS_PURCH_FUNC-DATAX-PARTNER     = 'X'.
*    APPEND LS_PURCH_FUNC TO LT_PURCH_FUNC[].
*
**   Invoicing Party
*    CLEAR LS_PURCH_FUNC.
*    LS_PURCH_FUNC-TASK = 'I'.
*    LS_PURCH_FUNC-DATA_KEY-PARVW    = 'RS'.
*    LS_PURCH_FUNC-DATA-PARTNER      = LS_VENDORS-HEADER-OBJECT_INSTANCE-LIFNR.
*    LS_PURCH_FUNC-DATAX-PARTNER     = 'X'.
*    APPEND LS_PURCH_FUNC TO LT_PURCH_FUNC[].
*
**   Vendor
*    CLEAR LS_PURCH_FUNC.
*    LS_PURCH_FUNC-TASK = 'I'.
*    LS_PURCH_FUNC-DATA_KEY-PARVW    = 'LF'.
*    LS_PURCH_FUNC-DATA-PARTNER      = LS_VENDORS-HEADER-OBJECT_INSTANCE-LIFNR.
*    LS_PURCH_FUNC-DATAX-PARTNER     = 'X'.
*    APPEND LS_PURCH_FUNC TO LT_PURCH_FUNC[].
*
**   Set the Purchasing Data – Partner functions
*    LS_PURCHASING-FUNCTIONS-FUNCTIONS  = LT_PURCH_FUNC[].
*    APPEND LS_PURCHASING TO LT_PURCHASING.

*   Set the Purchasing Data
    LS_VENDORS-PURCHASING_DATA-PURCHASING LT_PURCHASING[].
    APPEND LS_VENDORS TO LT_VENDORS.
    GS_VMDS_EXTERN-VENDORS LT_VENDORS[].
  ENDMETHOD.

  METHOD CREATE_VENDOR_DATA.

    DATALV_RETURN TYPE I.

    LV_RETURN =  ME->PREPARE_DATA).

    IF LV_RETURN IS NOT INITIAL.
      EXIT.
    ENDIF.

    VMD_EI_API=>INITIALIZE).

    CALL METHOD VMD_EI_API=>MAINTAIN_BAPI
      EXPORTING
        IS_MASTER_DATA           GS_VMDS_EXTERN
      IMPORTING
        ES_MASTER_DATA_CORRECT   GS_VMDS_SUCC
        ES_MESSAGE_CORRECT       GS_SUCC_MESSAGES
        ES_MASTER_DATA_DEFECTIVE GS_VMDS_ERROR
        ES_MESSAGE_DEFECTIVE     GS_ERR_MESSAGES.

    IF GS_ERR_MESSAGES-IS_ERROR IS INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT 'X'.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ENDIF.
  ENDMETHOD.
ENDCLASS.

SELECTION-SCREEN BEGIN OF BLOCK TB1.
PARAMETERSP_CCODE TYPE BUKRS,
            P_AKONT TYPE AKONT,
            P_KTOKK TYPE KTOKK,
            P_NAME  TYPE AD_NAME1.
SELECTION-SCREEN END OF BLOCK TB1.

DATALO_DATA  TYPE REF TO LCL_DATA,
      GV_LIFNR TYPE LIFNR.

START-OF-SELECTION.

  CREATE OBJECT LO_DATA
    EXPORTING
      I_CCODE P_CCODE
      I_AKONT P_AKONT
      I_KTOKK P_KTOKK
      I_NAME  P_NAME.

  CALL METHOD LO_DATA->CREATE_VENDOR_DATA
    IMPORTING
      E_LIFNR GV_LIFNR.


  WRITE GV_LIFNR.

Comments

Popular posts from this blog

PHP MySql CRUD Dengan Konsep MVC

Pada postingan kali ini saya akan sharing cara membuat CRUD dengan php menggunakan konsep MVC, ok langsung saja buka code editor (saya menggunakan sublime text) dan buat folder baru dengan nama phpmvc didalam folder htdocs kalian dan tambah folder seperti berikut :  Setelah itu kita siapkan database di mysql, buat database dengan nama phpmvc dan tablenya seperti gambar berikut : tambahkan file config.php didalam folder app/config : <?php define('BASEURL', 'http://localhost:8181/phpmvc/public'); define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PASS', ''); define('DB_NAME', 'phpmvc'); kemudian tambahkan 3 file controller didalam folder app/controllers, yaitu Home, About, dan Mahasiswa : Home.php <?php class Home extends Controller { public function index() { $data['nama'] = $this->model('User_model')->getUser()...

Cara Sederhana Multi Insert Data Dengan PHP - MySQL

Pada postingan kali ini saya akan share cara melakukan insert lebih dari satu data dengan menggunaka PHP- Jquery dan MySQL. Pertama buat database di MySQL dan table, disini saya membuat database dengan nama db_latihan dan table dengan nama t_barang dengan struktur table seperti berikut : Setelah membuat database dan table selanjutnya membuat project PHP, project PHP nya saya buat dengan nama multi-insert, lalu didalam folder ini saya membuat dua file yaitu index.php dan insert.php . Source code index.php seperti berikut : <! doctype   html > < html   lang = "en" >    < head >      <!-- Required meta tags -->      < meta   charset = "utf-8" >      < meta   name = "viewport"   content = "width=device-width, initial-scale=1" >      <!-- Bootstrap CSS -->      < link ...

IT Asset Management Dengan PHP MySQL

Pada postingan kali saya akan share sebuah aplikasi IT Asset management yang fungsinya untuk memonitoring semua Asset khusus IT, contohnya : Laptop/komputer , Printer, Router, Hardisk, dll. Dalam aplkasi ini kita bisa mengetahui Asset IT posisinya dimana dan digunakan oleh siapa. untuk data-data yang dibutuhkan antara lain : 1. data kategori asset dalam menu ini kita bisa meng-input jenis2 kategory asset : tambah kategori asset : 2. data department 3. data karyawan 4. data department per karyawan 5. data asset location  6. data satuan asset dan untuk transaksi yang ada dalam aplikasi ini adalah,  1. create asset, pada menu create asset ini kita akan mengalokasikan sebuah asset ke karyawan/personnel tampilannya seperti berikut: setelah klik tombol save akan muncul seperti dibawah : untuk melihat detail asset yang sudah dibuat tadi, kita bisa pilih...