VA01 en pedido- MV45AFZZ-USEREXIT_SAVE_DOCUMENT_PREPARE
VL01N en entrega- MV50AFZ1-USEREXIT_SAVE_DOCUMENT_PREPARE
miércoles, 11 de abril de 2012
lunes, 5 de marzo de 2012
Funcion para obtener condiciones de precio de factura sap
*Solo hay que llenar el numero de factura y marcar KONV_READ = 'X', y el numero de factura
data i_VBRK_I like VBRK.
data zkomv like KOMV occurs 0 with header line.
data zVBPA like VBPAVB occurs 0 with header line.
data zVBRK like VBRKVB occurs 0 with header line.
data zVBRP like VBRPVB occurs 0 with header line.
i_VBRK_I-vbeln = i_t-vbeln.
CALL FUNCTION 'RV_INVOICE_DOCUMENT_READ'
EXPORTING
KONV_READ = 'X'
VBRK_I = i_VBRK_I
TABLES
XKOMV = zKOMV
XVBPA = zVBPA
XVBRK = zVBRK
XVBRP = zVBRP.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
data i_VBRK_I like VBRK.
data zkomv like KOMV occurs 0 with header line.
data zVBPA like VBPAVB occurs 0 with header line.
data zVBRK like VBRKVB occurs 0 with header line.
data zVBRP like VBRPVB occurs 0 with header line.
i_VBRK_I-vbeln = i_t-vbeln.
CALL FUNCTION 'RV_INVOICE_DOCUMENT_READ'
EXPORTING
KONV_READ = 'X'
VBRK_I = i_VBRK_I
TABLES
XKOMV = zKOMV
XVBPA = zVBPA
XVBRK = zVBRK
XVBRP = zVBRP.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
jueves, 16 de febrero de 2012
Conectar excel con SAP
A continuacion una macro con la que desde excel se conecta a sap a una funcion z
la cual tiene que estar marcada en atrubibutos como RFC, en este ejemplo nomandamos parametros solo obtenemos los 10 primeros registros de la tabla KNA1 y los mostramos en el excel.
Sub Conectar()
Dim R3 As Object
Dim MyFunc As Object
' Parametros para exportar a la función RFC
Dim PI_CODIGO As Object
' Tablas para exportar a la función RFC
Dim PT_TABLA As Object
' Tablas para importar de la función RFC
Dim PT_OUTPUT As Object
' Resultado de la conexión con SAP
Dim Result As Boolean
' Otras variables
Dim iRow, iRowAux As Integer
'************************************************************************
' Flujo de proceso
'************************************************************************
' Establecer la conexión con los SAP add-ins
Set R3 = CreateObject("SAP.Functions")
' Ejecutar la función RFC en modo visible (te saldrá el popup de SAP GUI para poner usuario y contraseña
If R3.Connection.logon(0, False) <> True Then
MsgBox ("Error conectando al sistema")
End
Else
' Indicar la función RFC
Set MyFunc = R3.Add("ZTESTKNA1")
' Cargar parametros a ser enviados a la RFC – EXPORTING
' Set PI_CODIGO = MyFunc.exports("PI_CODIGO")
' PI_CODIGO.Value = Range("A1").Value
' Cargar tablas a ser enviadas a la RFC – TABLES
' Set PT_TABLA = MyFunc.Tables("I_KNA1")
' PT_TABLA.Rows.Add
' PT_TABLA.Value(1, "NAME1") = Range("B1").Value
' PT_TABLA.Value(1, "CAMPO2") = Range("B2").Value
' PT_TABLA.Value(2, "CAMPO1") = Range("C1").Value
' PT_TABLA.Value(2, " CAMPO2") = Range("C2").Value
' Llamar a la función RFC y guardar el resultado
Result = MyFunc.CALL
If Result = False Then
MsgBox ("Error llamando a la función")
Else
' Recuperar las tablas de salida – TABLES
Set PT_OUTPUT = MyFunc.Tables("I_KNA1")
For iRow = 1 To PT_OUTPUT.RowCount
ActiveCell.Offset(iRow, 0) = PT_OUTPUT(iRow, "NAME1")
Next
' Salir del sistema SAP
R3.Connection.logoff
End If
End If
End Sub
la cual tiene que estar marcada en atrubibutos como RFC, en este ejemplo nomandamos parametros solo obtenemos los 10 primeros registros de la tabla KNA1 y los mostramos en el excel.
Sub Conectar()
Dim R3 As Object
Dim MyFunc As Object
' Parametros para exportar a la función RFC
Dim PI_CODIGO As Object
' Tablas para exportar a la función RFC
Dim PT_TABLA As Object
' Tablas para importar de la función RFC
Dim PT_OUTPUT As Object
' Resultado de la conexión con SAP
Dim Result As Boolean
' Otras variables
Dim iRow, iRowAux As Integer
'************************************************************************
' Flujo de proceso
'************************************************************************
' Establecer la conexión con los SAP add-ins
Set R3 = CreateObject("SAP.Functions")
' Ejecutar la función RFC en modo visible (te saldrá el popup de SAP GUI para poner usuario y contraseña
If R3.Connection.logon(0, False) <> True Then
MsgBox ("Error conectando al sistema")
End
Else
' Indicar la función RFC
Set MyFunc = R3.Add("ZTESTKNA1")
' Cargar parametros a ser enviados a la RFC – EXPORTING
' Set PI_CODIGO = MyFunc.exports("PI_CODIGO")
' PI_CODIGO.Value = Range("A1").Value
' Cargar tablas a ser enviadas a la RFC – TABLES
' Set PT_TABLA = MyFunc.Tables("I_KNA1")
' PT_TABLA.Rows.Add
' PT_TABLA.Value(1, "NAME1") = Range("B1").Value
' PT_TABLA.Value(1, "CAMPO2") = Range("B2").Value
' PT_TABLA.Value(2, "CAMPO1") = Range("C1").Value
' PT_TABLA.Value(2, " CAMPO2") = Range("C2").Value
' Llamar a la función RFC y guardar el resultado
Result = MyFunc.CALL
If Result = False Then
MsgBox ("Error llamando a la función")
Else
' Recuperar las tablas de salida – TABLES
Set PT_OUTPUT = MyFunc.Tables("I_KNA1")
For iRow = 1 To PT_OUTPUT.RowCount
ActiveCell.Offset(iRow, 0) = PT_OUTPUT(iRow, "NAME1")
Next
' Salir del sistema SAP
R3.Connection.logoff
End If
End If
End Sub
martes, 8 de noviembre de 2011
Microsoft Bootvis
Nos sirve para optimizar el boteo de windows cuando tarda mucho en cargar el logo de windows o al entrar al sistema, correrlo seleccionar trace boot + drivers, se reinicia
luego de esto damos optimizar, se reinicia y listo.
luego de esto damos optimizar, se reinicia y listo.
viernes, 4 de noviembre de 2011
ZSDNETPRO
REPORT SDNETPR0.
*======================================================================*
* Tabellen *
*======================================================================*
TABLES : VBCO7.
TABLES : VBRP.
TABLES : MVKE.
TABLES : TVKO.
tables : TVTW.
TABLES : T001W.
TABLES : TSPA.
TABLES : TVFK.
TABLES : TVAK.
TABLES : TVAP.
TABLES : KNVV.
TABLES : KNA1.
TABLES : VBAK.
TABLES : TVTA.
*======================================================================*
* Includes *
*======================================================================*
INCLUDE ZRVREUSE_GLOBAL_DATA.
*INCLUDE RVREUSE_GLOBAL_DATA.
INCLUDE ZRVREUSE_LOCAL_DATA.
*INCLUDE RVREUSE_LOCAL_DATA.
INCLUDE ZRVREUSE_FORMS.
*INCLUDE RVREUSE_FORMS.
*======================================================================*
* Interne Strukturen *
*======================================================================*
DATA : BEGIN OF LT_MVKE OCCURS 1000.
DATA : MATNR LIKE MVKE-MATNR.
DATA : END OF LT_MVKE.
DATA: LT_KOMFKGN LIKE KOMFKGN OCCURS 1000 WITH HEADER LINE.
DATA : LT_KOMFKKO LIKE KOMV OCCURS 1000 WITH HEADER LINE.
DATA : LT_T683S LIKE T683S OCCURS 1000 WITH HEADER LINE.
DATA : LD_VBSK LIKE VBSK.
DATA : LT_KOMFK LIKE KOMFK OCCURS 1.
DATA : LT_KOMV LIKE KOMV OCCURS 1000 WITH HEADER LINE.
DATA : LT_THEAD LIKE THEADVB OCCURS 1000.
DATA : LT_VBFS LIKE VBFS OCCURS 1000 WITH HEADER LINE.
DATA : LT_VBPA LIKE VBPAVB OCCURS 1000.
DATA : LT_VBRK LIKE VBRKVB OCCURS 10 WITH HEADER LINE.
DATA : LT_VBRP LIKE VBRPVB OCCURS 1000 WITH HEADER LINE.
DATA : LT_VBSS LIKE VBSS OCCURS 10.
DATA : ADDRESS LIKE KNA1.
DATA : BEGIN OF LT_NETPR OCCURS 10.
INCLUDE STRUCTURE VBRPVB.
DATA : WAERK LIKE VBRK-WAERK,
END OF LT_NETPR.
DATA : TRVOG TYPE C,
LF_KVORG LIKE KOMK-KVORG.
DATA : LD_VTWEG LIKE VBCO7-VTWEG.
data : ld_use_control like rvsel-xfeld value 'X'.
*======================================================================*
* Selektionsdynpro 1000 *
*======================================================================*
*Block : Organisationsdaten--------------------------------------------*
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK ORGAN WITH FRAME TITLE TEXT-A01.
PARAMETERS: P_VKORG LIKE VBCO7-VKORG OBLIGATORY.
PARAMETERS: P_VTWEG LIKE VBCO7-VTWEG OBLIGATORY.
PARAMETERS: P_SPART LIKE VBCO7-SPART OBLIGATORY.
SELECTION-SCREEN END OF BLOCK ORGAN.
*Block : Kundendaten---------------------------------------------------*
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK KUNDE WITH FRAME TITLE TEXT-A02.
PARAMETERS: P_KUNNR LIKE VBCO7-KUNNR OBLIGATORY.
SELECTION-SCREEN END OF BLOCK KUNDE.
*Block : Kundendaten---------------------------------------------------*
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK MATER WITH FRAME TITLE TEXT-A03.
PARAMETERS: P_WERKS LIKE VBRP-WERKS OBLIGATORY.
*SELECT-OPTIONS:
PARAMETERS S_MATNR LIKE VBRP-MATNR.
SELECTION-SCREEN END OF BLOCK MATER.
*Block : Vorgabedaten--------------------------------------------------*
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK DATUM WITH FRAME TITLE TEXT-A04.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TEXT-S05 FOR FIELD P_FKDAT.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS: P_FKDAT LIKE VBRp-prsdt OBLIGATORY DEFAULT SY-DATUM.
SELECTION-SCREEN POSITION 50.
PARAMETERS: P_PSIMU TYPE PSIMU DEFAULT ' '.
SELECTION-SCREEN COMMENT 53(20) TEXT-S06 FOR FIELD P_PSIMU.
SELECTION-SCREEN END OF LINE.
PARAMETERS: P_FKARA LIKE VBAK-FKARA OBLIGATORY DEFAULT 'FX' .
PARAMETERS: P_AUART LIKE VBAK-AUART OBLIGATORY DEFAULT 'TA' .
PARAMETERS: P_PSTYV LIKE VBAP-PSTYV OBLIGATORY DEFAULT 'TAN' .
SELECTION-SCREEN END OF BLOCK DATUM.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN OUTPUT (PBO-Zeitpunkt) *
*======================================================================*
*AT SELECTION-SCREEN OUTPUT.
*======================================================================*
AT SELECTION-SCREEN OUTPUT.
DATA EXCLUDE LIKE RSEXFCODE OCCURS 0 WITH HEADER LINE.
IF SY-DYNNR = 1000.
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
P_STATUS = 'SELK'
TABLES
P_EXCLUDE = EXCLUDE
EXCEPTIONS
OTHERS = 1.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_VKORG *
*======================================================================*
AT SELECTION-SCREEN ON P_VKORG.
IF SY-DYNNR = 1000.
IF NOT P_VKORG IS INITIAL.
SELECT SINGLE * FROM TVKO WHERE VKORG = P_VKORG.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_VKORG SPACE SPACE 'TVKO'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_VTWEG *
*======================================================================*
AT SELECTION-SCREEN ON P_VTWEG.
IF SY-DYNNR = 1000.
IF NOT P_VTWEG IS INITIAL.
SELECT SINGLE * FROM TVTW WHERE VTWEG = P_VTWEG.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_VTWEG SPACE SPACE 'TVTW'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_SPART *
*======================================================================*
AT SELECTION-SCREEN ON P_SPART.
IF SY-DYNNR = 1000.
IF NOT P_SPART IS INITIAL.
SELECT SINGLE * FROM TSPA WHERE SPART = P_SPART.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_SPART SPACE SPACE 'TSPA'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_KUNNR *
*======================================================================*
AT SELECTION-SCREEN ON P_KUNNR.
IF SY-DYNNR = 1000.
IF NOT P_KUNNR IS INITIAL.
CALL FUNCTION 'VIEW_KNA1'
EXPORTING
KUNDE = P_KUNNR
IMPORTING
ANSCHRIFT = ADDRESS
EXCEPTIONS
NO_KNA1 = 1
OTHERS = 2.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_KUNNR SPACE SPACE 'KNA1'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_WERKS *
*======================================================================*
AT SELECTION-SCREEN ON P_WERKS.
IF SY-DYNNR = 1000.
IF NOT P_WERKS IS INITIAL.
SELECT SINGLE * FROM T001W WHERE WERKS = P_WERKS.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_WERKS SPACE SPACE 'T001W'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_FKARA *
*======================================================================*
AT SELECTION-SCREEN ON P_FKARA.
IF SY-DYNNR = 1000.
IF NOT P_FKARA IS INITIAL.
SELECT SINGLE * FROM TVFK WHERE FKART = P_FKARA.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_FKARA SPACE SPACE 'TVFK'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_AUART *
*======================================================================*
AT SELECTION-SCREEN ON P_AUART.
IF SY-DYNNR = 1000.
IF NOT P_AUART IS INITIAL.
SELECT SINGLE * FROM TVAK WHERE AUArt = P_AUART.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_AUART SPACE SPACE 'TVAK'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_PSTYV *
*======================================================================*
AT SELECTION-SCREEN ON P_PSTYV.
IF SY-DYNNR = 1000.
IF NOT P_PSTYV IS INITIAL.
SELECT SINGLE * FROM TVAP WHERE PSTYV = P_PSTYV.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_PSTYV SPACE SPACE 'TVAP'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN (PAI-Zeitpunkt) *
* letztes PAI-Ereignis *
*======================================================================*
AT SELECTION-SCREEN.
* daten selektieren
IF SY-UCOMM = 'SPAL'.
IF GS_SD_ALV-VARIANT IS INITIAL.
PERFORM REUSE_ALV_VARIANT_FILL USING SY-REPID
TRVOG
SPACE
SY-UNAME
GS_SD_ALV-VARIANT.
ENDIF.
* PERFORM ALV_VARIANT_DISPLAY USING 'X'.
DATA: LV_VIEWNAME LIKE DD02L-TABNAME.
LV_VIEWNAME = 'LT_NETPR'.
GS_SD_ALV-VARIANT-REPORT = 'SDNETPR0'.
PERFORM REUSE_ALV_FIELDCATALOG_MERGE USING GS_SD_ALV-FIELDCAT[]
LV_VIEWNAME
SPACE
SPACE.
CALL FUNCTION 'REUSE_ALV_VARIANT_SELECT'
EXPORTING
I_DIALOG = 'X'
I_USER_SPECIFIC = 'A'
I_DEFAULT = SPACE
IT_DEFAULT_FIELDCAT = GS_SD_ALV-FIELDCAT[]
I_LAYOUT = GS_SD_ALV-LAYOUT
IMPORTING
ET_FIELDCAT = GS_SD_ALV-FIELDCAT[]
ET_SORT = GS_SD_ALV-SORT[]
ET_FILTER = GS_SD_ALV-FILTER[]
CHANGING
CS_VARIANT = GS_SD_ALV-VARIANT
EXCEPTIONS
WRONG_INPUT = 1
FC_NOT_COMPLETE = 2
NOT_FOUND = 3
PROGRAM_ERROR = 4
OTHERS = 5.
SET SCREEN SY-DYNNR.
LEAVE SCREEN.
ENDIF.
*======================================================================*
* Ereignis : START-OF-SELECTION (PAI-Zeitpunkt) *
* *
*======================================================================*
START-OF-SELECTION.
* daten selektieren
IF GS_SD_ALV-VARIANT IS INITIAL.
GS_SD_ALV-VARIANT-REPORT = 'SDNETPR0'.
PERFORM REUSE_ALV_VARIANT_DEFAULT
USING GS_SD_ALV.
ENDIF.
SELECT SINGLE * FROM TVTA WHERE VKORG = P_VKORG
AND VTWEG = P_VTWEG
AND SPART = P_SPART.
LD_VTWEG = TVTA-VTWKU.
SELECT MATNR
INTO CORRESPONDING FIELDS OF TABLE LT_MVKE
FROM MVKE
WHERE MATNR EQ S_MATNR AND
VKORG EQ P_VKORG AND
VTWEG EQ LD_VTWEG.
CLEAR LT_KOMFKGN.
LT_KOMFKGN-MANDT = SY-MANDT.
LT_KOMFKGN-AUART = P_AUART.
LT_KOMFKGN-VKORG = P_VKORG.
LT_KOMFKGN-VTWEG = P_VTWEG.
LT_KOMFKGN-SPART = P_SPART.
LT_KOMFKGN-FKDAT = P_FKDAT.
LT_KOMFKGN-KUNAG = P_KUNNR.
LT_KOMFKGN-PSTYV = P_PSTYV.
LT_KOMFKGN-KWMENG = 1.
LT_KOMFKGN-WERKS = P_WERKS.
LT_KOMFKGN-VGBEL = SY-UZEIT.
LT_KOMFKGN-VGBEL+6(4) = '9999'.
LT_KOMFKGN-FKARA = P_FKARA.
LT_KOMFKGN-TAXM1 = '1'.
LT_KOMFKGN-TAXK1 = '1'.
SELECT SINGLE * FROM TVFK WHERE FKART = 'FX'.
LOOP AT LT_MVKE.
LT_KOMFKGN-MATNR = LT_MVKE-MATNR.
* prepare material number
if not lt_komfkgn-matnr is initial.
call function 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = lt_komfkgn-matnr
IMPORTING
output = lt_komfkgn-matnr.
endif.
LT_KOMFKGN-VGPOS = LT_KOMFKGN-VGPOS + 1.
APPEND LT_KOMFKGN.
ENDLOOP.
IF NOT P_PSIMU IS INITIAL.
LF_KVORG = '08'.
ENDIF.
CALL FUNCTION 'GN_INVOICE_CREATE'
EXPORTING
VBSK_I = LD_VBSK
ID_KVORG = LF_KVORG
id_no_dialog = 'X'
invoice_date = p_fkdat
pricing_date = p_fkdat
IMPORTING
VBSK_E = LD_VBSK
TABLES
XKOMFK = LT_KOMFK
XKOMFKGN = LT_KOMFKGN
XKOMFKKO = LT_KOMFKKO
XKOMV = LT_KOMV
XTHEAD = LT_THEAD
XVBFS = LT_VBFS
XVBPA = LT_VBPA
XVBRK = LT_VBRK
XVBRP = LT_VBRP
XVBSS = LT_VBSS
EXCEPTIONS
OTHERS = 1.
*======================================================================*
* Ereignis : END-OF-SELECTION (PAI-Zeitpunkt) *
* *
*======================================================================*
END-OF-SELECTION.
DATA : PT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA : PS_LAYOUT TYPE SLIS_LAYOUT_ALV.
LT_NETPR[] = LT_VBRP[].
LT_NETPR-WAERK = LT_VBRK-WAERK.
MODIFY LT_NETPR TRANSPORTING WAERK WHERE WAERK EQ SPACE.
*FJCH MANDAMOS LA INFORMACION A MEMORIA
DATA LINEAS LIKE SY-TABIX.
DATA PN LIKE LT_NETPR-NETPR.
DATA PB LIKE LT_NETPR-NETPR.
* BREAK-POINT.
DESCRIBE TABLE LT_NETPR LINES LINEAS.
IF LINEAS > 0.
READ TABLE LT_NETPR INDEX 1.
EXPORT PB FROM LT_NETPR-NETPR TO MEMORY ID 'PB'.
* LOOP AT LT_KOMV WHERE KWERT_K < 0.
* LT_NETPR-NETPR = LT_NETPR-NETPR + LT_KOMV-KWERT_K.
* ENDLOOP.
DATA SUMA LIKE LT_KOMV-KBETR.
LOOP AT LT_KOMV WHERE WAERS = '' and KAWRT <> '0' AND KBETR < 0 .
SUMA = SUMA + ( LT_KOMV-KBETR * -1 ).
ENDLOOP.
SUMA = SUMA / 1000.
SUMA = 1 - SUMA.
LT_NETPR-NETPR = LT_NETPR-NETPR * SUMA.
EXPORT PN FROM LT_NETPR-NETPR TO MEMORY ID 'PN'.
ELSE.
LT_NETPR-NETPR = 0.
EXPORT PB FROM LT_NETPR-NETPR TO MEMORY ID 'PB'.
EXPORT PN FROM LT_NETPR-NETPR TO MEMORY ID 'PN'.
ENDIF.
* CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
* EXPORTING
* I_PROGRAM_NAME = 'SDNETPR0'
* I_INTERNAL_TABNAME = 'LT_NETPR'
* I_INCLNAME = 'SDNETPR0'
* CHANGING
* CT_FIELDCAT = PT_FIELDCAT
* EXCEPTIONS
* INCONSISTENT_INTERFACE = 1
* PROGRAM_ERROR = 2
* OTHERS = 3.
*
* PS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
* PS_LAYOUT-DETAIL_POPUP = 'X'.
* PS_LAYOUT-NO_KEYFIX = 'X'.
* PS_LAYOUT-KEY_HOTSPOT = 'X'.
*
* data : ld_function(30).
* if ld_use_control is initial.
* ld_function = 'REUSE_ALV_LIST_DISPLAY'.
* else.
* ld_function = 'REUSE_ALV_GRID_DISPLAY'.
* endif.
* CALL FUNCTION ld_function
* EXPORTING
* I_CALLBACK_PROGRAM = 'SDNETPR0'
* I_CALLBACK_PF_STATUS_SET = 'NETPR_PF_STATUS_SET'
* I_CALLBACK_USER_COMMAND = 'NETPR_USER_COMMAND'
* IS_LAYOUT = PS_LAYOUT
* IT_FIELDCAT = PT_FIELDCAT
* I_DEFAULT = 'X'
* I_SAVE = 'A'
* IS_VARIANT = GS_SD_ALV-VARIANT
* TABLES
* T_OUTTAB = LT_NETPR
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2.
*
**---------------------------------------------------------------------*
** FORM NETPR_PF_STATUS_SET *
**---------------------------------------------------------------------*
** ........ *
**---------------------------------------------------------------------*
** --> RT_EXTAB *
**---------------------------------------------------------------------*
*FORM NETPR_PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
* DATA: LT_EXTAB TYPE SLIS_T_EXTAB.
* DATA: BEGIN OF EXCTAB OCCURS 1,
* OKCOD(4) TYPE C,
* END OF EXCTAB.
*
* REFRESH EXCTAB.
*
* APPEND LINES OF EXCTAB TO LT_EXTAB.
* APPEND LINES OF RT_EXTAB TO LT_EXTAB.
*
* SET PF-STATUS 'NETPR_ALV' EXCLUDING LT_EXTAB.
*
*ENDFORM.
*
**---------------------------------------------------------------------*
** FORM NETPR_USER_COMMAND *
**---------------------------------------------------------------------*
** ........ *
**---------------------------------------------------------------------*
** --> R_UCOMM *
** --> RS_SELFIELD *
**---------------------------------------------------------------------*
*FORM NETPR_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
* RS_SELFIELD TYPE SLIS_SELFIELD.
*
* IF R_UCOMM = 'EPRO'.
* READ TABLE LT_VBFS INDEX 1.
* IF SY-SUBRC IS INITIAL.
* CALL FUNCTION 'VBFS_TREE_LIST_DISPLAY'
** EXPORTING
** I_VBFS_CALLBACK_PROGRAM =
** I_VBFS_CALLBACK_USER_COMMAND =
** I_VBFS_CALLBACK_GUI_STATUS =
* TABLES
* I_VBFS = LT_VBFS
* EXCEPTIONS
* OTHERS = 1.
* ELSE.
* MESSAGE E008(VR).
* ENDIF.
* ENDIF.
*
*
*
*
*
*
*
*ENDFORM.
*======================================================================*
* Tabellen *
*======================================================================*
TABLES : VBCO7.
TABLES : VBRP.
TABLES : MVKE.
TABLES : TVKO.
tables : TVTW.
TABLES : T001W.
TABLES : TSPA.
TABLES : TVFK.
TABLES : TVAK.
TABLES : TVAP.
TABLES : KNVV.
TABLES : KNA1.
TABLES : VBAK.
TABLES : TVTA.
*======================================================================*
* Includes *
*======================================================================*
INCLUDE ZRVREUSE_GLOBAL_DATA.
*INCLUDE RVREUSE_GLOBAL_DATA.
INCLUDE ZRVREUSE_LOCAL_DATA.
*INCLUDE RVREUSE_LOCAL_DATA.
INCLUDE ZRVREUSE_FORMS.
*INCLUDE RVREUSE_FORMS.
*======================================================================*
* Interne Strukturen *
*======================================================================*
DATA : BEGIN OF LT_MVKE OCCURS 1000.
DATA : MATNR LIKE MVKE-MATNR.
DATA : END OF LT_MVKE.
DATA: LT_KOMFKGN LIKE KOMFKGN OCCURS 1000 WITH HEADER LINE.
DATA : LT_KOMFKKO LIKE KOMV OCCURS 1000 WITH HEADER LINE.
DATA : LT_T683S LIKE T683S OCCURS 1000 WITH HEADER LINE.
DATA : LD_VBSK LIKE VBSK.
DATA : LT_KOMFK LIKE KOMFK OCCURS 1.
DATA : LT_KOMV LIKE KOMV OCCURS 1000 WITH HEADER LINE.
DATA : LT_THEAD LIKE THEADVB OCCURS 1000.
DATA : LT_VBFS LIKE VBFS OCCURS 1000 WITH HEADER LINE.
DATA : LT_VBPA LIKE VBPAVB OCCURS 1000.
DATA : LT_VBRK LIKE VBRKVB OCCURS 10 WITH HEADER LINE.
DATA : LT_VBRP LIKE VBRPVB OCCURS 1000 WITH HEADER LINE.
DATA : LT_VBSS LIKE VBSS OCCURS 10.
DATA : ADDRESS LIKE KNA1.
DATA : BEGIN OF LT_NETPR OCCURS 10.
INCLUDE STRUCTURE VBRPVB.
DATA : WAERK LIKE VBRK-WAERK,
END OF LT_NETPR.
DATA : TRVOG TYPE C,
LF_KVORG LIKE KOMK-KVORG.
DATA : LD_VTWEG LIKE VBCO7-VTWEG.
data : ld_use_control like rvsel-xfeld value 'X'.
*======================================================================*
* Selektionsdynpro 1000 *
*======================================================================*
*Block : Organisationsdaten--------------------------------------------*
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK ORGAN WITH FRAME TITLE TEXT-A01.
PARAMETERS: P_VKORG LIKE VBCO7-VKORG OBLIGATORY.
PARAMETERS: P_VTWEG LIKE VBCO7-VTWEG OBLIGATORY.
PARAMETERS: P_SPART LIKE VBCO7-SPART OBLIGATORY.
SELECTION-SCREEN END OF BLOCK ORGAN.
*Block : Kundendaten---------------------------------------------------*
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK KUNDE WITH FRAME TITLE TEXT-A02.
PARAMETERS: P_KUNNR LIKE VBCO7-KUNNR OBLIGATORY.
SELECTION-SCREEN END OF BLOCK KUNDE.
*Block : Kundendaten---------------------------------------------------*
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK MATER WITH FRAME TITLE TEXT-A03.
PARAMETERS: P_WERKS LIKE VBRP-WERKS OBLIGATORY.
*SELECT-OPTIONS:
PARAMETERS S_MATNR LIKE VBRP-MATNR.
SELECTION-SCREEN END OF BLOCK MATER.
*Block : Vorgabedaten--------------------------------------------------*
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK DATUM WITH FRAME TITLE TEXT-A04.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TEXT-S05 FOR FIELD P_FKDAT.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS: P_FKDAT LIKE VBRp-prsdt OBLIGATORY DEFAULT SY-DATUM.
SELECTION-SCREEN POSITION 50.
PARAMETERS: P_PSIMU TYPE PSIMU DEFAULT ' '.
SELECTION-SCREEN COMMENT 53(20) TEXT-S06 FOR FIELD P_PSIMU.
SELECTION-SCREEN END OF LINE.
PARAMETERS: P_FKARA LIKE VBAK-FKARA OBLIGATORY DEFAULT 'FX' .
PARAMETERS: P_AUART LIKE VBAK-AUART OBLIGATORY DEFAULT 'TA' .
PARAMETERS: P_PSTYV LIKE VBAP-PSTYV OBLIGATORY DEFAULT 'TAN' .
SELECTION-SCREEN END OF BLOCK DATUM.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN OUTPUT (PBO-Zeitpunkt) *
*======================================================================*
*AT SELECTION-SCREEN OUTPUT.
*======================================================================*
AT SELECTION-SCREEN OUTPUT.
DATA EXCLUDE LIKE RSEXFCODE OCCURS 0 WITH HEADER LINE.
IF SY-DYNNR = 1000.
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
P_STATUS = 'SELK'
TABLES
P_EXCLUDE = EXCLUDE
EXCEPTIONS
OTHERS = 1.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_VKORG *
*======================================================================*
AT SELECTION-SCREEN ON P_VKORG.
IF SY-DYNNR = 1000.
IF NOT P_VKORG IS INITIAL.
SELECT SINGLE * FROM TVKO WHERE VKORG = P_VKORG.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_VKORG SPACE SPACE 'TVKO'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_VTWEG *
*======================================================================*
AT SELECTION-SCREEN ON P_VTWEG.
IF SY-DYNNR = 1000.
IF NOT P_VTWEG IS INITIAL.
SELECT SINGLE * FROM TVTW WHERE VTWEG = P_VTWEG.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_VTWEG SPACE SPACE 'TVTW'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_SPART *
*======================================================================*
AT SELECTION-SCREEN ON P_SPART.
IF SY-DYNNR = 1000.
IF NOT P_SPART IS INITIAL.
SELECT SINGLE * FROM TSPA WHERE SPART = P_SPART.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_SPART SPACE SPACE 'TSPA'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_KUNNR *
*======================================================================*
AT SELECTION-SCREEN ON P_KUNNR.
IF SY-DYNNR = 1000.
IF NOT P_KUNNR IS INITIAL.
CALL FUNCTION 'VIEW_KNA1'
EXPORTING
KUNDE = P_KUNNR
IMPORTING
ANSCHRIFT = ADDRESS
EXCEPTIONS
NO_KNA1 = 1
OTHERS = 2.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_KUNNR SPACE SPACE 'KNA1'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_WERKS *
*======================================================================*
AT SELECTION-SCREEN ON P_WERKS.
IF SY-DYNNR = 1000.
IF NOT P_WERKS IS INITIAL.
SELECT SINGLE * FROM T001W WHERE WERKS = P_WERKS.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_WERKS SPACE SPACE 'T001W'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_FKARA *
*======================================================================*
AT SELECTION-SCREEN ON P_FKARA.
IF SY-DYNNR = 1000.
IF NOT P_FKARA IS INITIAL.
SELECT SINGLE * FROM TVFK WHERE FKART = P_FKARA.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_FKARA SPACE SPACE 'TVFK'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_AUART *
*======================================================================*
AT SELECTION-SCREEN ON P_AUART.
IF SY-DYNNR = 1000.
IF NOT P_AUART IS INITIAL.
SELECT SINGLE * FROM TVAK WHERE AUArt = P_AUART.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_AUART SPACE SPACE 'TVAK'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_PSTYV *
*======================================================================*
AT SELECTION-SCREEN ON P_PSTYV.
IF SY-DYNNR = 1000.
IF NOT P_PSTYV IS INITIAL.
SELECT SINGLE * FROM TVAP WHERE PSTYV = P_PSTYV.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_PSTYV SPACE SPACE 'TVAP'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN (PAI-Zeitpunkt) *
* letztes PAI-Ereignis *
*======================================================================*
AT SELECTION-SCREEN.
* daten selektieren
IF SY-UCOMM = 'SPAL'.
IF GS_SD_ALV-VARIANT IS INITIAL.
PERFORM REUSE_ALV_VARIANT_FILL USING SY-REPID
TRVOG
SPACE
SY-UNAME
GS_SD_ALV-VARIANT.
ENDIF.
* PERFORM ALV_VARIANT_DISPLAY USING 'X'.
DATA: LV_VIEWNAME LIKE DD02L-TABNAME.
LV_VIEWNAME = 'LT_NETPR'.
GS_SD_ALV-VARIANT-REPORT = 'SDNETPR0'.
PERFORM REUSE_ALV_FIELDCATALOG_MERGE USING GS_SD_ALV-FIELDCAT[]
LV_VIEWNAME
SPACE
SPACE.
CALL FUNCTION 'REUSE_ALV_VARIANT_SELECT'
EXPORTING
I_DIALOG = 'X'
I_USER_SPECIFIC = 'A'
I_DEFAULT = SPACE
IT_DEFAULT_FIELDCAT = GS_SD_ALV-FIELDCAT[]
I_LAYOUT = GS_SD_ALV-LAYOUT
IMPORTING
ET_FIELDCAT = GS_SD_ALV-FIELDCAT[]
ET_SORT = GS_SD_ALV-SORT[]
ET_FILTER = GS_SD_ALV-FILTER[]
CHANGING
CS_VARIANT = GS_SD_ALV-VARIANT
EXCEPTIONS
WRONG_INPUT = 1
FC_NOT_COMPLETE = 2
NOT_FOUND = 3
PROGRAM_ERROR = 4
OTHERS = 5.
SET SCREEN SY-DYNNR.
LEAVE SCREEN.
ENDIF.
*======================================================================*
* Ereignis : START-OF-SELECTION (PAI-Zeitpunkt) *
* *
*======================================================================*
START-OF-SELECTION.
* daten selektieren
IF GS_SD_ALV-VARIANT IS INITIAL.
GS_SD_ALV-VARIANT-REPORT = 'SDNETPR0'.
PERFORM REUSE_ALV_VARIANT_DEFAULT
USING GS_SD_ALV.
ENDIF.
SELECT SINGLE * FROM TVTA WHERE VKORG = P_VKORG
AND VTWEG = P_VTWEG
AND SPART = P_SPART.
LD_VTWEG = TVTA-VTWKU.
SELECT MATNR
INTO CORRESPONDING FIELDS OF TABLE LT_MVKE
FROM MVKE
WHERE MATNR EQ S_MATNR AND
VKORG EQ P_VKORG AND
VTWEG EQ LD_VTWEG.
CLEAR LT_KOMFKGN.
LT_KOMFKGN-MANDT = SY-MANDT.
LT_KOMFKGN-AUART = P_AUART.
LT_KOMFKGN-VKORG = P_VKORG.
LT_KOMFKGN-VTWEG = P_VTWEG.
LT_KOMFKGN-SPART = P_SPART.
LT_KOMFKGN-FKDAT = P_FKDAT.
LT_KOMFKGN-KUNAG = P_KUNNR.
LT_KOMFKGN-PSTYV = P_PSTYV.
LT_KOMFKGN-KWMENG = 1.
LT_KOMFKGN-WERKS = P_WERKS.
LT_KOMFKGN-VGBEL = SY-UZEIT.
LT_KOMFKGN-VGBEL+6(4) = '9999'.
LT_KOMFKGN-FKARA = P_FKARA.
LT_KOMFKGN-TAXM1 = '1'.
LT_KOMFKGN-TAXK1 = '1'.
SELECT SINGLE * FROM TVFK WHERE FKART = 'FX'.
LOOP AT LT_MVKE.
LT_KOMFKGN-MATNR = LT_MVKE-MATNR.
* prepare material number
if not lt_komfkgn-matnr is initial.
call function 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = lt_komfkgn-matnr
IMPORTING
output = lt_komfkgn-matnr.
endif.
LT_KOMFKGN-VGPOS = LT_KOMFKGN-VGPOS + 1.
APPEND LT_KOMFKGN.
ENDLOOP.
IF NOT P_PSIMU IS INITIAL.
LF_KVORG = '08'.
ENDIF.
CALL FUNCTION 'GN_INVOICE_CREATE'
EXPORTING
VBSK_I = LD_VBSK
ID_KVORG = LF_KVORG
id_no_dialog = 'X'
invoice_date = p_fkdat
pricing_date = p_fkdat
IMPORTING
VBSK_E = LD_VBSK
TABLES
XKOMFK = LT_KOMFK
XKOMFKGN = LT_KOMFKGN
XKOMFKKO = LT_KOMFKKO
XKOMV = LT_KOMV
XTHEAD = LT_THEAD
XVBFS = LT_VBFS
XVBPA = LT_VBPA
XVBRK = LT_VBRK
XVBRP = LT_VBRP
XVBSS = LT_VBSS
EXCEPTIONS
OTHERS = 1.
*======================================================================*
* Ereignis : END-OF-SELECTION (PAI-Zeitpunkt) *
* *
*======================================================================*
END-OF-SELECTION.
DATA : PT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA : PS_LAYOUT TYPE SLIS_LAYOUT_ALV.
LT_NETPR[] = LT_VBRP[].
LT_NETPR-WAERK = LT_VBRK-WAERK.
MODIFY LT_NETPR TRANSPORTING WAERK WHERE WAERK EQ SPACE.
*FJCH MANDAMOS LA INFORMACION A MEMORIA
DATA LINEAS LIKE SY-TABIX.
DATA PN LIKE LT_NETPR-NETPR.
DATA PB LIKE LT_NETPR-NETPR.
* BREAK-POINT.
DESCRIBE TABLE LT_NETPR LINES LINEAS.
IF LINEAS > 0.
READ TABLE LT_NETPR INDEX 1.
EXPORT PB FROM LT_NETPR-NETPR TO MEMORY ID 'PB'.
* LOOP AT LT_KOMV WHERE KWERT_K < 0.
* LT_NETPR-NETPR = LT_NETPR-NETPR + LT_KOMV-KWERT_K.
* ENDLOOP.
DATA SUMA LIKE LT_KOMV-KBETR.
LOOP AT LT_KOMV WHERE WAERS = '' and KAWRT <> '0' AND KBETR < 0 .
SUMA = SUMA + ( LT_KOMV-KBETR * -1 ).
ENDLOOP.
SUMA = SUMA / 1000.
SUMA = 1 - SUMA.
LT_NETPR-NETPR = LT_NETPR-NETPR * SUMA.
EXPORT PN FROM LT_NETPR-NETPR TO MEMORY ID 'PN'.
ELSE.
LT_NETPR-NETPR = 0.
EXPORT PB FROM LT_NETPR-NETPR TO MEMORY ID 'PB'.
EXPORT PN FROM LT_NETPR-NETPR TO MEMORY ID 'PN'.
ENDIF.
* CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
* EXPORTING
* I_PROGRAM_NAME = 'SDNETPR0'
* I_INTERNAL_TABNAME = 'LT_NETPR'
* I_INCLNAME = 'SDNETPR0'
* CHANGING
* CT_FIELDCAT = PT_FIELDCAT
* EXCEPTIONS
* INCONSISTENT_INTERFACE = 1
* PROGRAM_ERROR = 2
* OTHERS = 3.
*
* PS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
* PS_LAYOUT-DETAIL_POPUP = 'X'.
* PS_LAYOUT-NO_KEYFIX = 'X'.
* PS_LAYOUT-KEY_HOTSPOT = 'X'.
*
* data : ld_function(30).
* if ld_use_control is initial.
* ld_function = 'REUSE_ALV_LIST_DISPLAY'.
* else.
* ld_function = 'REUSE_ALV_GRID_DISPLAY'.
* endif.
* CALL FUNCTION ld_function
* EXPORTING
* I_CALLBACK_PROGRAM = 'SDNETPR0'
* I_CALLBACK_PF_STATUS_SET = 'NETPR_PF_STATUS_SET'
* I_CALLBACK_USER_COMMAND = 'NETPR_USER_COMMAND'
* IS_LAYOUT = PS_LAYOUT
* IT_FIELDCAT = PT_FIELDCAT
* I_DEFAULT = 'X'
* I_SAVE = 'A'
* IS_VARIANT = GS_SD_ALV-VARIANT
* TABLES
* T_OUTTAB = LT_NETPR
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2.
*
**---------------------------------------------------------------------*
** FORM NETPR_PF_STATUS_SET *
**---------------------------------------------------------------------*
** ........ *
**---------------------------------------------------------------------*
** --> RT_EXTAB *
**---------------------------------------------------------------------*
*FORM NETPR_PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
* DATA: LT_EXTAB TYPE SLIS_T_EXTAB.
* DATA: BEGIN OF EXCTAB OCCURS 1,
* OKCOD(4) TYPE C,
* END OF EXCTAB.
*
* REFRESH EXCTAB.
*
* APPEND LINES OF EXCTAB TO LT_EXTAB.
* APPEND LINES OF RT_EXTAB TO LT_EXTAB.
*
* SET PF-STATUS 'NETPR_ALV' EXCLUDING LT_EXTAB.
*
*ENDFORM.
*
**---------------------------------------------------------------------*
** FORM NETPR_USER_COMMAND *
**---------------------------------------------------------------------*
** ........ *
**---------------------------------------------------------------------*
** --> R_UCOMM *
** --> RS_SELFIELD *
**---------------------------------------------------------------------*
*FORM NETPR_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
* RS_SELFIELD TYPE SLIS_SELFIELD.
*
* IF R_UCOMM = 'EPRO'.
* READ TABLE LT_VBFS INDEX 1.
* IF SY-SUBRC IS INITIAL.
* CALL FUNCTION 'VBFS_TREE_LIST_DISPLAY'
** EXPORTING
** I_VBFS_CALLBACK_PROGRAM =
** I_VBFS_CALLBACK_USER_COMMAND =
** I_VBFS_CALLBACK_GUI_STATUS =
* TABLES
* I_VBFS = LT_VBFS
* EXCEPTIONS
* OTHERS = 1.
* ELSE.
* MESSAGE E008(VR).
* ENDIF.
* ENDIF.
*
*
*
*
*
*
*
*ENDFORM.
Calcular precio neto con descuentos
************************************************************************
*DESCRIPCION
************************************************************************
*Reporte que genera un listado con el precio neto de cada material
*considerando los descuentos.
*Los parametros del programa son cliente y material y un check para
*bajar o no el archivo de texto y ruta del servidor donde se guardara
*el archivo txt
*FJCH OCT.2011
************************************************************************
REPORT ZPREFIN .
TABLES: KNA1,LIPS,MAKT,MARA,KNVV,MARC.
INCLUDE ZALV.
************************************************************************
*VARIABLES
************************************************************************
DATA g_repid like sy-repid.
data A(10).
data porc type p.
DATA LINEAS LIKE SY-TABIX.
DATA LINEAS2 LIKE SY-TABIX.
************************************************************************
*TABLAS INTERNAS
************************************************************************
*TABLA DE SALIDA DEL AVL
DATA: BEGIN OF IOUT OCCURS 0,
WERKS like KNVV-VWERK,
VKORG LIKE KNVV-VKORG,
VTWEG LIKE KNVV-VTWEG,
SPART LIKE KNVV-SPART,
BZIRK LIKE KNVV-BZIRK,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
MATNR LIKE LIPS-MATNR,
MAKTX LIKE MAKT-MAKTX,
NETPR2 LIKE LIPS-NETPR,
NETPR LIKE LIPS-NETPR
.
DATA END OF IOUT.
*TABLA CON LA INFORMACION DE LOS MATERIALES.
DATA IMAKT LIKE MAKT OCCURS 0 WITH HEADER LINE.
DATA BEGIN OF IMARA OCCURS 0.
INCLUDE STRUCTURE MARA.
DATA WERKS LIKE MARC-WERKS.
DATA END OF IMARA.
*TABLA CON LA INFORMACION DE LOS CLIENTES
DATA BEGIN OF IKNA1 OCCURS 0.
INCLUDE STRUCTURE KNA1.
DATA: BZIRK LIKE KNVV-BZIRK,
VWERK LIKE KNVV-VWERK,
VKORG LIKE KNVV-VKORG,
VTWEG LIKE KNVV-VTWEG,
SPART LIKE KNVV-SPART,
NETPR LIKE LIPS-NETPR,
NETPR2 LIKE LIPS-NETPR.
DATA END OF IKNA1.
************************************************************************
*PARAMETROS
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK LIST WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
P_CLI FOR KNA1-KUNNR OBLIGATORY,
P_MATKL FOR MARA-MATKL,
P_MAT FOR LIPS-MATNR,
P_ZONA FOR KNVV-BZIRK,
P_WERKS FOR MARC-WERKS.
SELECTION-SCREEN END OF BLOCK LIST.
SELECTION-SCREEN BEGIN OF BLOCK LIST2 WITH FRAME TITLE TEXT-002.
PARAMETERS:
P_CHECK AS CHECKBOX,
P_PATH(128) DEFAULT
'C:\Inetpub\ftproot\comercial\PRNETO.TXT',
P_SEPARA(1) DEFAULT '|'.
SELECTION-SCREEN END OF BLOCK LIST2.
************************************************************************
*START-OF-SELECTION
************************************************************************
START-OF-SELECTION.
g_repid = sy-repid.
PERFORM TRAEINFO.
DESCRIBE TABLE IOUT LINES LINEAS.
DELETE IOUT WHERE NETPR = 0.
IF P_CHECK = 'X'.
PERFORM DOWNLOADA.
MESSAGE I368(00) WITH 'Se ha descargado archivo ' P_PATH.
ELSE.
PERFORM DESPLIEGAALV.
ENDIF.
*&---------------------------------------------------------------------*
*& Form TRAEINFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM TRAEINFO.
DATA FECHA2 LIKE SY-DATUM.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 1
TEXT = 'Recolectando datos'.
FECHA2 = SY-DATUM - 30.
*SI SELECCIONA TODOS LOS CLIENTES SOLO
*TRAEMOS LOS CLIENTES QUE HAN CREADO UN PEDIDO EN EL ULTIMO MES
IF P_CLI-LOW = '*'.
SELECT KNA1~KUNNR NAME1 KNVV~VKORG KNVV~VTWEG KNVV~SPART BZIRK FROM
KNA1
JOIN KNVV ON KNVV~KUNNR = KNA1~KUNNR
JOIN VBAK ON VBAK~KUNNR = KNA1~KUNNR INTO
CORRESPONDING FIELDS OF TABLE IKNA1
WHERE KNA1~KUNNR IN P_CLI AND
BZIRK IN P_ZONA
AND ( VBAK~ERDAT >= FECHA2 AND VBAK~ERDAT <= SY-DATUM ).
ELSE.
SELECT KNA1~KUNNR NAME1 KNVV~VKORG KNVV~VTWEG KNVV~SPART BZIRK FROM
KNA1
JOIN KNVV ON KNVV~KUNNR = KNA1~KUNNR INTO
CORRESPONDING FIELDS OF TABLE IKNA1
WHERE KNA1~KUNNR IN P_CLI AND
BZIRK IN P_ZONA
.
ENDIF.
SORT IKNA1 BY KUNNR BZIRK VWERK VKORG VTWEG SPART.
DELETE ADJACENT DUPLICATES FROM IKNA1 COMPARING ALL FIELDS.
*SI SELECCIONA TODOS LOS MATERIALES TOMAMOS TODOS LOS QUE SE HAYA ECHO
*UN PEDIDO EN EL ULTIMO MES DE LO CONTRARIO LOS QUE INDIQUE EL PARAMETRO
DATA BEGIN OF MATERIALES OCCURS 0.
DATA MATNR LIKE VBAP-MATNR.
DATA END OF MATERIALES.
IF P_MAT-LOW IS INITIAL OR P_MAT-LOW = '*'.
CLEAR P_MAT. REFRESH P_MAT.
SELECT MATNR FROM VBAP INTO TABLE MATERIALES
WHERE ERDAT >= FECHA2 AND ERDAT <= SY-DATUM.
SORT MATERIALES BY MATNR.
DELETE ADJACENT DUPLICATES FROM MATERIALES COMPARING MATNR.
LOOP AT MATERIALES.
P_MAT-SIGN = 'I'.
P_MAT-OPTION = 'EQ'.
P_MAT-LOW = MATERIALES-MATNR.
APPEND P_MAT.
ENDLOOP.
ENDIF.
SELECT MARA~MATNR WERKS FROM MARA
JOIN MARC ON MARA~MATNR = MARC~MATNR
INTO CORRESPONDING FIELDS OF TABLE IMARA
WHERE MARA~MATNR IN P_MAT
AND WERKS IN P_WERKS
AND MTART = 'FERT'
AND MATKL IN P_MATKL.
IF SY-SUBRC = 0.
DELETE ADJACENT DUPLICATES FROM IMARA COMPARING MATNR.
ENDIF.
IF SY-SUBRC = 0.
SELECT MATNR MAKTX FROM MAKT INTO CORRESPONDING FIELDS OF TABLE
IMAKT
FOR ALL ENTRIES IN IMARA
WHERE MATNR = IMARA-MATNR.
ENDIF.
*CALCULAMOS EL PRECIO NETO Y BRUTO PARA CADA CLIENTE CON CADA PRODUCTO
*DE LOS QUE SACAMOS ANTERIORMENTE
DESCRIBE TABLE IKNA1 LINES LINEAS.
DESCRIBE TABLE IKNA1 LINES LINEAS2.
DATA CLINEAS2(20).
DATA CLINEAS22(20).
MOVE LINEAS2 TO CLINEAS22.
LOOP AT IKNA1.
MOVE SY-TABIX TO CLINEAS2.
CONDENSE: CLINEAS2, CLINEAS22.
CONCATENATE CLINEAS2 '/' CLINEAS22 INTO A.
porc = sy-tabix * ( 100 / lineas ).
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = porc
TEXT = A.
LOOP AT IMARA.
PERFORM F_PRECIOF.
MOVE-CORRESPONDING IKNA1 TO IOUT.
IOUT-MATNR = IMARA-MATNR.
IOUT-WERKS = IMARA-WERKS.
READ TABLE IMAKT WITH KEY MATNR = IMARA-MATNR.
IF SY-SUBRC = 0.
IOUT-MAKTX = IMAKT-MAKTX.
ENDIF.
APPEND IOUT.
ENDLOOP.
ENDLOOP.
ENDFORM. " TRAEINFO
*&---------------------------------------------------------------------*
*& Form DESPLIEGAALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DESPLIEGAALV.
PERFORM obt_descrip_campos_tabla USING g_repid 'IOUT'.
PERFORM camb_descrip_campos_tabla USING 'NETPR' 'Pr.Bruto'.
PERFORM camb_descrip_campos_tabla USING 'NETPR2' 'Pr.Neto'.
PERFORM carac_gen_listado.
PERFORM visualizar_lista TABLES IOUT USING 'IOUT' g_repid .
ENDFORM. " DESPLIEGAALV
*&---------------------------------------------------------------------*
*& Form DESPLIEGAALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form set_status using rt_extab type slis_t_extab.
set pf-status 'ZSTANDARD'. "Status nuevo
set titlebar 'T001'. "Titulo
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DOWNLOADA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWNLOADA.
DATA: LINEA(10000),
CNETWR(20),CNETWR2(20).
OPEN DATASET P_PATH FOR OUTPUT IN TEXT MODE.
LOOP AT IOUT.
CLEAR: LINEA,CNETWR,CNETWR2.
MOVE IOUT-NETPR TO CNETWR.
MOVE IOUT-NETPR2 TO CNETWR2.
CONDENSE: CNETWR, CNETWR2.
CONCATENATE
IOUT-WERKS P_SEPARA
IOUT-VKORG P_SEPARA
IOUT-VTWEG P_SEPARA
IOUT-SPART P_SEPARA
IOUT-BZIRK P_SEPARA
IOUT-KUNNR P_SEPARA
IOUT-NAME1 P_SEPARA
IOUT-MATNR P_SEPARA
IOUT-MAKTX P_SEPARA
CNETWR2 P_SEPARA
CNETWR P_SEPARA
INTO LINEA.
TRANSFER LINEA TO P_PATH.
ENDLOOP.
CLOSE DATASET P_PATH.
ENDFORM. " DOWNLOADA
*&---------------------------------------------------------------------*
*& Form F_PRECIOF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IOUT_MATNR text
* -->P_IOUT_KUNNR text
*----------------------------------------------------------------------*
FORM F_PRECIOF.
SUBMIT ZSDNETPR0
WITH P_VKORG = IKNA1-VKORG
WITH P_VTWEG = IKNA1-VTWEG
WITH P_SPART = IKNA1-SPART
WITH P_KUNNR = IKNA1-KUNNR
WITH P_WERKS = IMARA-WERKS
WITH S_MATNR = IMARA-MATNR
WITH P_FKDAT = SY-DATUM AND RETURN.
IMPORT PB TO IKNA1-NETPR FROM MEMORY ID 'PB'.
IMPORT PN TO IKNA1-NETPR2 FROM MEMORY ID 'PN'.
ENDFORM. " F_PRECIOF
*DESCRIPCION
************************************************************************
*Reporte que genera un listado con el precio neto de cada material
*considerando los descuentos.
*Los parametros del programa son cliente y material y un check para
*bajar o no el archivo de texto y ruta del servidor donde se guardara
*el archivo txt
*FJCH OCT.2011
************************************************************************
REPORT ZPREFIN .
TABLES: KNA1,LIPS,MAKT,MARA,KNVV,MARC.
INCLUDE ZALV.
************************************************************************
*VARIABLES
************************************************************************
DATA g_repid like sy-repid.
data A(10).
data porc type p.
DATA LINEAS LIKE SY-TABIX.
DATA LINEAS2 LIKE SY-TABIX.
************************************************************************
*TABLAS INTERNAS
************************************************************************
*TABLA DE SALIDA DEL AVL
DATA: BEGIN OF IOUT OCCURS 0,
WERKS like KNVV-VWERK,
VKORG LIKE KNVV-VKORG,
VTWEG LIKE KNVV-VTWEG,
SPART LIKE KNVV-SPART,
BZIRK LIKE KNVV-BZIRK,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
MATNR LIKE LIPS-MATNR,
MAKTX LIKE MAKT-MAKTX,
NETPR2 LIKE LIPS-NETPR,
NETPR LIKE LIPS-NETPR
.
DATA END OF IOUT.
*TABLA CON LA INFORMACION DE LOS MATERIALES.
DATA IMAKT LIKE MAKT OCCURS 0 WITH HEADER LINE.
DATA BEGIN OF IMARA OCCURS 0.
INCLUDE STRUCTURE MARA.
DATA WERKS LIKE MARC-WERKS.
DATA END OF IMARA.
*TABLA CON LA INFORMACION DE LOS CLIENTES
DATA BEGIN OF IKNA1 OCCURS 0.
INCLUDE STRUCTURE KNA1.
DATA: BZIRK LIKE KNVV-BZIRK,
VWERK LIKE KNVV-VWERK,
VKORG LIKE KNVV-VKORG,
VTWEG LIKE KNVV-VTWEG,
SPART LIKE KNVV-SPART,
NETPR LIKE LIPS-NETPR,
NETPR2 LIKE LIPS-NETPR.
DATA END OF IKNA1.
************************************************************************
*PARAMETROS
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK LIST WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
P_CLI FOR KNA1-KUNNR OBLIGATORY,
P_MATKL FOR MARA-MATKL,
P_MAT FOR LIPS-MATNR,
P_ZONA FOR KNVV-BZIRK,
P_WERKS FOR MARC-WERKS.
SELECTION-SCREEN END OF BLOCK LIST.
SELECTION-SCREEN BEGIN OF BLOCK LIST2 WITH FRAME TITLE TEXT-002.
PARAMETERS:
P_CHECK AS CHECKBOX,
P_PATH(128) DEFAULT
'C:\Inetpub\ftproot\comercial\PRNETO.TXT',
P_SEPARA(1) DEFAULT '|'.
SELECTION-SCREEN END OF BLOCK LIST2.
************************************************************************
*START-OF-SELECTION
************************************************************************
START-OF-SELECTION.
g_repid = sy-repid.
PERFORM TRAEINFO.
DESCRIBE TABLE IOUT LINES LINEAS.
DELETE IOUT WHERE NETPR = 0.
IF P_CHECK = 'X'.
PERFORM DOWNLOADA.
MESSAGE I368(00) WITH 'Se ha descargado archivo ' P_PATH.
ELSE.
PERFORM DESPLIEGAALV.
ENDIF.
*&---------------------------------------------------------------------*
*& Form TRAEINFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM TRAEINFO.
DATA FECHA2 LIKE SY-DATUM.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 1
TEXT = 'Recolectando datos'.
FECHA2 = SY-DATUM - 30.
*SI SELECCIONA TODOS LOS CLIENTES SOLO
*TRAEMOS LOS CLIENTES QUE HAN CREADO UN PEDIDO EN EL ULTIMO MES
IF P_CLI-LOW = '*'.
SELECT KNA1~KUNNR NAME1 KNVV~VKORG KNVV~VTWEG KNVV~SPART BZIRK FROM
KNA1
JOIN KNVV ON KNVV~KUNNR = KNA1~KUNNR
JOIN VBAK ON VBAK~KUNNR = KNA1~KUNNR INTO
CORRESPONDING FIELDS OF TABLE IKNA1
WHERE KNA1~KUNNR IN P_CLI AND
BZIRK IN P_ZONA
AND ( VBAK~ERDAT >= FECHA2 AND VBAK~ERDAT <= SY-DATUM ).
ELSE.
SELECT KNA1~KUNNR NAME1 KNVV~VKORG KNVV~VTWEG KNVV~SPART BZIRK FROM
KNA1
JOIN KNVV ON KNVV~KUNNR = KNA1~KUNNR INTO
CORRESPONDING FIELDS OF TABLE IKNA1
WHERE KNA1~KUNNR IN P_CLI AND
BZIRK IN P_ZONA
.
ENDIF.
SORT IKNA1 BY KUNNR BZIRK VWERK VKORG VTWEG SPART.
DELETE ADJACENT DUPLICATES FROM IKNA1 COMPARING ALL FIELDS.
*SI SELECCIONA TODOS LOS MATERIALES TOMAMOS TODOS LOS QUE SE HAYA ECHO
*UN PEDIDO EN EL ULTIMO MES DE LO CONTRARIO LOS QUE INDIQUE EL PARAMETRO
DATA BEGIN OF MATERIALES OCCURS 0.
DATA MATNR LIKE VBAP-MATNR.
DATA END OF MATERIALES.
IF P_MAT-LOW IS INITIAL OR P_MAT-LOW = '*'.
CLEAR P_MAT. REFRESH P_MAT.
SELECT MATNR FROM VBAP INTO TABLE MATERIALES
WHERE ERDAT >= FECHA2 AND ERDAT <= SY-DATUM.
SORT MATERIALES BY MATNR.
DELETE ADJACENT DUPLICATES FROM MATERIALES COMPARING MATNR.
LOOP AT MATERIALES.
P_MAT-SIGN = 'I'.
P_MAT-OPTION = 'EQ'.
P_MAT-LOW = MATERIALES-MATNR.
APPEND P_MAT.
ENDLOOP.
ENDIF.
SELECT MARA~MATNR WERKS FROM MARA
JOIN MARC ON MARA~MATNR = MARC~MATNR
INTO CORRESPONDING FIELDS OF TABLE IMARA
WHERE MARA~MATNR IN P_MAT
AND WERKS IN P_WERKS
AND MTART = 'FERT'
AND MATKL IN P_MATKL.
IF SY-SUBRC = 0.
DELETE ADJACENT DUPLICATES FROM IMARA COMPARING MATNR.
ENDIF.
IF SY-SUBRC = 0.
SELECT MATNR MAKTX FROM MAKT INTO CORRESPONDING FIELDS OF TABLE
IMAKT
FOR ALL ENTRIES IN IMARA
WHERE MATNR = IMARA-MATNR.
ENDIF.
*CALCULAMOS EL PRECIO NETO Y BRUTO PARA CADA CLIENTE CON CADA PRODUCTO
*DE LOS QUE SACAMOS ANTERIORMENTE
DESCRIBE TABLE IKNA1 LINES LINEAS.
DESCRIBE TABLE IKNA1 LINES LINEAS2.
DATA CLINEAS2(20).
DATA CLINEAS22(20).
MOVE LINEAS2 TO CLINEAS22.
LOOP AT IKNA1.
MOVE SY-TABIX TO CLINEAS2.
CONDENSE: CLINEAS2, CLINEAS22.
CONCATENATE CLINEAS2 '/' CLINEAS22 INTO A.
porc = sy-tabix * ( 100 / lineas ).
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = porc
TEXT = A.
LOOP AT IMARA.
PERFORM F_PRECIOF.
MOVE-CORRESPONDING IKNA1 TO IOUT.
IOUT-MATNR = IMARA-MATNR.
IOUT-WERKS = IMARA-WERKS.
READ TABLE IMAKT WITH KEY MATNR = IMARA-MATNR.
IF SY-SUBRC = 0.
IOUT-MAKTX = IMAKT-MAKTX.
ENDIF.
APPEND IOUT.
ENDLOOP.
ENDLOOP.
ENDFORM. " TRAEINFO
*&---------------------------------------------------------------------*
*& Form DESPLIEGAALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DESPLIEGAALV.
PERFORM obt_descrip_campos_tabla USING g_repid 'IOUT'.
PERFORM camb_descrip_campos_tabla USING 'NETPR' 'Pr.Bruto'.
PERFORM camb_descrip_campos_tabla USING 'NETPR2' 'Pr.Neto'.
PERFORM carac_gen_listado.
PERFORM visualizar_lista TABLES IOUT USING 'IOUT' g_repid .
ENDFORM. " DESPLIEGAALV
*&---------------------------------------------------------------------*
*& Form DESPLIEGAALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form set_status using rt_extab type slis_t_extab.
set pf-status 'ZSTANDARD'. "Status nuevo
set titlebar 'T001'. "Titulo
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DOWNLOADA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWNLOADA.
DATA: LINEA(10000),
CNETWR(20),CNETWR2(20).
OPEN DATASET P_PATH FOR OUTPUT IN TEXT MODE.
LOOP AT IOUT.
CLEAR: LINEA,CNETWR,CNETWR2.
MOVE IOUT-NETPR TO CNETWR.
MOVE IOUT-NETPR2 TO CNETWR2.
CONDENSE: CNETWR, CNETWR2.
CONCATENATE
IOUT-WERKS P_SEPARA
IOUT-VKORG P_SEPARA
IOUT-VTWEG P_SEPARA
IOUT-SPART P_SEPARA
IOUT-BZIRK P_SEPARA
IOUT-KUNNR P_SEPARA
IOUT-NAME1 P_SEPARA
IOUT-MATNR P_SEPARA
IOUT-MAKTX P_SEPARA
CNETWR2 P_SEPARA
CNETWR P_SEPARA
INTO LINEA.
TRANSFER LINEA TO P_PATH.
ENDLOOP.
CLOSE DATASET P_PATH.
ENDFORM. " DOWNLOADA
*&---------------------------------------------------------------------*
*& Form F_PRECIOF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IOUT_MATNR text
* -->P_IOUT_KUNNR text
*----------------------------------------------------------------------*
FORM F_PRECIOF.
SUBMIT ZSDNETPR0
WITH P_VKORG = IKNA1-VKORG
WITH P_VTWEG = IKNA1-VTWEG
WITH P_SPART = IKNA1-SPART
WITH P_KUNNR = IKNA1-KUNNR
WITH P_WERKS = IMARA-WERKS
WITH S_MATNR = IMARA-MATNR
WITH P_FKDAT = SY-DATUM AND RETURN.
IMPORT PB TO IKNA1-NETPR FROM MEMORY ID 'PB'.
IMPORT PN TO IKNA1-NETPR2 FROM MEMORY ID 'PN'.
ENDFORM. " F_PRECIOF
Smartform
*Programa ejemplo que recolecta datos y luego los manda a un smartform por medio de *itab1
REPORT ZTESTSMART .
* Calling SMARTFORMS from your ABAP program.
* Collecting all the table data in your program, and pass once to
* SMARTFORMS
* Declare your table type in :-
* Global Settings -> Form Interface
* Global Definintions -> Global Data
* Main Window -> Table -> DATA
*
* Written by : SAP Hints and Tips on Configuration and ABAP/4
*Programming
* http://sapr3.tripod.com
*
TABLES: MKPF.
DATA: FM_NAME TYPE RS38L_FNAM.
DATA: BEGIN OF INT_MKPF OCCURS 0.
INCLUDE STRUCTURE MKPF.
DATA: END OF INT_MKPF.
data itab1 like int_mkpf occurs 0 with header line.
SELECT-OPTIONS S_MBLNR FOR MKPF-MBLNR MEMORY ID 001.
select * from mkpf into corresponding fields of table int_mkpf up to 10
rows.
* At the end of your program.
* Passing data to SMARTFORMS
*call function 'SSF_FUNCTION_MODULE_NAME'
* exporting
* formname = 'ZCON_BANCARIA'
* VARIANT = ' '
* DIRECT_CALL = ' '
* IMPORTING
* FM_NAME = FM_NAME
* EXCEPTIONS
* NO_FORM = 1
* NO_FUNCTION_MODULE = 2
* OTHERS = 3.
*
*if sy-subrc <> 0.
* WRITE: / 'ERROR 1'.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*endif.
itab1[] = int_mkpf[].
call function '/1BCDWB/SF00000011'
*call function FM_NAME
* EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
* CONTROL_PARAMETERS =
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* OUTPUT_OPTIONS =
* USER_SETTINGS = 'X'
* IMPORTING
* DOCUMENT_OUTPUT_INFO =
* JOB_OUTPUT_INFO =
* JOB_OUTPUT_OPTIONS =
TABLES
itab1 = itab1
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
REPORT ZTESTSMART .
* Calling SMARTFORMS from your ABAP program.
* Collecting all the table data in your program, and pass once to
* SMARTFORMS
* Declare your table type in :-
* Global Settings -> Form Interface
* Global Definintions -> Global Data
* Main Window -> Table -> DATA
*
* Written by : SAP Hints and Tips on Configuration and ABAP/4
*Programming
* http://sapr3.tripod.com
*
TABLES: MKPF.
DATA: FM_NAME TYPE RS38L_FNAM.
DATA: BEGIN OF INT_MKPF OCCURS 0.
INCLUDE STRUCTURE MKPF.
DATA: END OF INT_MKPF.
data itab1 like int_mkpf occurs 0 with header line.
SELECT-OPTIONS S_MBLNR FOR MKPF-MBLNR MEMORY ID 001.
select * from mkpf into corresponding fields of table int_mkpf up to 10
rows.
* At the end of your program.
* Passing data to SMARTFORMS
*call function 'SSF_FUNCTION_MODULE_NAME'
* exporting
* formname = 'ZCON_BANCARIA'
* VARIANT = ' '
* DIRECT_CALL = ' '
* IMPORTING
* FM_NAME = FM_NAME
* EXCEPTIONS
* NO_FORM = 1
* NO_FUNCTION_MODULE = 2
* OTHERS = 3.
*
*if sy-subrc <> 0.
* WRITE: / 'ERROR 1'.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*endif.
itab1[] = int_mkpf[].
call function '/1BCDWB/SF00000011'
*call function FM_NAME
* EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
* CONTROL_PARAMETERS =
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* OUTPUT_OPTIONS =
* USER_SETTINGS = 'X'
* IMPORTING
* DOCUMENT_OUTPUT_INFO =
* JOB_OUTPUT_INFO =
* JOB_OUTPUT_OPTIONS =
TABLES
itab1 = itab1
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
Suscribirse a:
Entradas (Atom)