Si encontraste la información que buscabas, o si te pareció interesante. Considera hacer una donación

Ejemplo de conexiones SAP R/3 y VB.net 2005

En este proyecto personal de ingreso de pedidos a SAP usamos vb.net  y ABAP 4 de lado del servidor. En este ejemplo solo vamos a explicar cómo hacer una simple consulta de clientes para registrar su pedido.

Herramientas a utilizar:

  • Microsoft Visual Studio .NET 2005
  • Microsoft .NET Data Provider for mySAP.
  • SAP R/3. 

 

 

Manos a la obra 

Primer paso:

Abrimos un proyecto nuevo en VB.net  y le ponemos como nombre “RFCClientes”

 

Segundo paso:

  Referenciamos a la librería del sap provider .

 




Puedes descargar gratis de aquí: http://msdn2.microsoft.com/en-us/library/ms141761.aspx el data provider my sap.

Tercer paso:

Creamos en el form los siguientes componentes:

·         2 textbox

  • TxtDescripcion 
  • TxtDireccion

·         2 maskedtextbox

  • TxtCod1 
  • TxtCod2

·         1 datagridview

  • DataGridView1

·         1 button

  • BtnPresentar

Debe quedar la pantalla más o menos así:

 

Cuarto paso:

 

Crear un paquete de funciones en SAP usando la transacción SE80, damos click derecho a Grupo funciones, Crear,  ponen como nombre “ZKNA1” y una descripción del paquete.



Y dan grabar.

Quinto paso.

Creamos una tabla física llamada. “ZBRFCKNA1” con la transacción SE11.



Grabamos y Activamos 

Sexto paso:

Creamos la función en sap que nos traiga la consulta de los clientes, usamos la transacción SE37.

Le damos un nombre “Z_FI_CLIENTE” y creamos.

Debemos poner en la pestaña de atributos la opción de “Módulo de acceso remoto”



Luego establecemos valores de entrada en “Import”.



Establecemos en la parte de Tablas una referencia llamada “TABCLIENTE”.



Por último el código fuente.



En detalle:

FUNCTION Z_FI_CLIENTE.

*"----------------------------------------------------------------------

*"*"Interfase local

*"  IMPORTING

*"     VALUE(KUNNR1) LIKE  KNA1-KUNNR DEFAULT SPACE

*"     VALUE(KUNNR2) LIKE  KNA1-KUNNR DEFAULT SPACE

*"     VALUE(NAME1) LIKE  KNA1-NAME1 DEFAULT SPACE

*"     VALUE(STRAS) LIKE  KNA1-STRAS DEFAULT SPACE

*"  TABLES

*"      TABCLIENTE STRUCTURE  ZBRFCKNA1

*"----------------------------------------------------------------------

IF KUNNR2 = ''.

  SELECT KNA1~KUNNR KNA1~STCD1 KNA1~ANRED KNA1~NAME1

  KNA1~ORT01 KNA1~STRAS

  KNA1~TELF1 KNA1~TELFX KNVI~TAXKD INTO TABLE TABCLIENTE

  FROM ( KNA1

           inner join KNB1

           on  KNB1~KUNNR = KNA1~KUNNR

           inner join KNVI

           on  KNVI~KUNNR = KNB1~KUNNR )

  WHERE KNB1~BUKRS EQ 'GRUP'

    AND KNA1~KUNNR LIKE KUNNR1

    AND KNA1~NAME1 LIKE NAME1

    AND KNA1~STRAS LIKE STRAS.

ELSE.

  SELECT KNA1~KUNNR KNA1~STCD1 KNA1~ANRED KNA1~NAME1

  KNA1~ORT01 KNA1~STRAS

  KNA1~TELF1 KNA1~TELFX KNVI~TAXKD INTO TABLE TABCLIENTE

  FROM ( KNA1

           inner join KNB1

           on  KNB1~KUNNR = KNA1~KUNNR

           inner join KNVI

           on  KNVI~KUNNR = KNB1~KUNNR )

  WHERE KNB1~BUKRS EQ 'GRUP'

    AND KNA1~KUNNR BETWEEN KUNNR1 AND KUNNR2

    AND KNA1~NAME1 LIKE NAME1

    AND KNA1~STRAS LIKE STRAS.

ENDIF.
 

ENDFUNCTION.

 

Como vez el código es muy simple, hacemos una validación cuando hay un segundo código del cliente realiza el siguiente query.

Grabamos y Activamos.

Séptimo Paso:

El código VB.net:

Imports Microsoft.Adapter.SAP

Public Class Form1

    Private Sub BtnPresentar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPresentar.Click

        Me.Cursor = System.Windows.Forms.Cursors.WaitCursor

        Try

            Dim sSql As String = "EXEC Z_FI_CLIENTE " 

            If Me.TxtCod1.Text.Length > 0 Then 

                Dim Cod1 As String = Me.TxtCod1.ToString.Substring(Me.TxtCod1.ToString.Length - 10)

                If Me.TxtCod2.Text.Length > 0 Then

                    Dim Cod2 As String = Me.TxtCod2.ToString.Substring(Me.TxtCod2.ToString.Length - 10) 

                    sSql &= "@KUNNR1='" & Cod1 & "'"

                    sSql &= ",@KUNNR2='" & Cod2 & "'"

                Else

                    sSql &= "@KUNNR1='" & Cod1 & "',@KUNNR2=''"

                End If

            Else 

                sSql &= "@KUNNR1='%',@KUNNR2=''"

            End If

 

            If Me.TxtDescripcion.Text.Trim.Length > 0 Then 

                sSql &= ",@NAME1='" & Me.TxtDescripcion.Text.Trim & "'" 

            Else

                sSql &= ",@NAME1='%'"

            End If

 

            If Me.TxtDireccion.Text.Trim.Length > 0 Then

                sSql &= ",@STRAS='" & Me.TxtDireccion.Text.Trim & "'"

            Else

                sSql &= ",@STRAS='%'"

            End If 

            Dim I As SAPConnection = New SAPConnection

            Dim Cont As Long = 0

            I.ConnectionString = "ASHOST=192.168.0.180;SYSNR=0;CLIENT=200;USER=IOBREGON;PASSWORD=******;LANG=EN"

            I.Open()  

            Dim R As SAPCommand = New SAPCommand(I)

            R.CommandText = sSql

            R.CommandType = CommandType.Text

            Dim Dr As SAPDataReader = R.ExecuteReader() 

            Dim intCol As Integer

            Me.DataGridView1.Rows.Clear()

            Me.DataGridView1.Columns.Clear()

            For intCol = 0 To Dr.FieldCount - 1

                Me.DataGridView1.Columns.Add(Dr.GetName(intCol), Dr.GetName(intCol))

            Next 

            While Dr.Read

                Dim objCelulas(intCol) As Object

                Dr.GetValues(objCelulas) 

                Me.DataGridView1.Rows.Add(objCelulas)

            End While 

            Me.DataGridView1.Columns(0).HeaderText = "Código"

            Me.DataGridView1.Columns(1).HeaderText = "Identificación"

            Me.DataGridView1.Columns(2).HeaderText = "Trato"

            Me.DataGridView1.Columns(2).Width = 80

            Me.DataGridView1.Columns(3).HeaderText = "Nombre"

            Me.DataGridView1.Columns(3).Width = 220

            Me.DataGridView1.Columns(4).HeaderText = "Ciudad" 

            Me.DataGridView1.Columns(5).HeaderText = "Dirección"

            Me.DataGridView1.Columns(6).HeaderText = "Teléfono" 

            Me.DataGridView1.Columns(7).HeaderText = "Fax" 

            Me.DataGridView1.Columns(8).HeaderText = "IVA"

            Me.DataGridView1.Columns(8).Width = 80

            Dr.Close()

            I.Close()

            I.Dispose()

            If Me.DataGridView1.RowCount <= 1 Then Me.DataGridView1.Item(1, 0).Value = "No se produjo resultados"

            Me.DataGridView1.Focus()

        Catch Ex As Exception 

            System.Windows.Forms.MessageBox.Show("No pudo realizar la consulta por: " & Ex.Message, "Mensaje del Sistema", Windows.Forms.MessageBoxButtons.OK, Windows.Forms.MessageBoxIcon.Exclamation)

        End Try 

        Me.Cursor = System.Windows.Forms.Cursors.Default

    End Sub

End Class 

Octavo y ultimo

Lo probamos:

  



y listo

Se pueden descargar el proyecto completo: RFCClientes.rar (86,88 kb)

Cualquier cosa estoy para ayudarlos


Actualmente calificado con 5.0 por 2 personas

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:
Categories: .NET | Programación | SAP
Acciones: E-mail | Permalink | RSS ComentariosRSS comentarios

0 Comentarios

Publicaciones relacionadas

Añadir comentario


 

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]