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.

1 comentario:

Anónimo dijo...

Hola Felipe,

Tienes el manual de este producto?

Saludos,

slemes@ig.com.br