Professional Documents
Culture Documents
END OF TY_COMPENSA.
*
* DECLARACION
*
DATA: T_VBAK
TAB_TREE
T_TREE
T_HEADER
*
DE TABLAS INTERNAS
*
TYPE STANDARD TABLE
TYPE STANDARD TABLE
TYPE STANDARD TABLE
TYPE STANDARD TABLE
*
OF
OF
OF
OF
TY_VBAK
TY_VBAK
TY_VBAK
TY_HEADER
WITH
WITH
WITH
WITH
HEADER
HEADER
HEADER
HEADER
LINE,
LINE,
LINE,
LINE.
LIKE BDCDATA
LIKE BDCMSGCOLL
TYPE UI_FUNCTIONS,
toolBar
LIKE BSAD-AUGBL,
LIKE
LIKE
LIKE
LIKE
BSAD-ZUONR,
BSAD-BUDAT,
VBAK-BSTNK,
BKPF-BUDAT.
**&---------------------------------------------------------------------*
**&
PARAMETROS
**&---------------------------------------------------------------------*
**
SELECTION-SCREEN BEGIN OF BLOCK B00 WITH FRAME TITLE TEXT-000.
PARAMETERS: P_BUKRS LIKE T001-BUKRS NO-DISPLAY ,
P_VKORG LIKE VBAK-VKORG DEFAULT '3300',
P_VTWEG LIKE VBAK-VTWEG DEFAULT 'IR',
P_SPART LIKE VBAK-SPART DEFAULT 'SV'.
SELECTION-SCREEN END OF BLOCK B00.
SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-001.
PARAMETERS:
P_WERKS LIKE VBAP-WERKS,
P_KUNNR LIKE BSID-KUNNR, "DEFAULT '12900134',
P_HKONT LIKE BSID-HKONT OBLIGATORY.
SELECT-OPTIONS:
S_AUART
FOR VBAK-AUART.
SELECT-OPTIONS:
S_AUDAT
FOR VBAK-AUDAT.
" boto
" doc
SELECTION-SCREEN SKIP 1.
PARAMETER:
P_GJAHR LIKE BSID-GJAHR DEFAULT SY-DATUM+0(4),
P_DAYANT(2) TYPE N DEFAULT '07'.
SELECTION-SCREEN END OF BLOCK B01.
*SELECTION-SCREEN BEGIN OF BLOCK B00 WITH FRAME TITLE TEXT-002.
*PARAMETERS: R_COMP RADIOBUTTON GROUP GRUP USER-COMMAND R DEFAULT 'X',
*
R_REPO RADIOBUTTON GROUP GRUP.
*SELECTION-SCREEN END OF BLOCK B00.
PARAMETERS: P_MODEB
MODIF ID COM.
"BI
**&---------------------------------------------------------------------*
**&
DYNPRO
**&---------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
**
DATA: OK_CODE
LIKE SY-UCOMM,
"Variables para el ALV
GS_LAYOUT
TYPE LVC_S_LAYO,
GT_FIELDCAT
TYPE LVC_T_FCAT,
CUSTOM_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
CUSTOM_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
CUSTOM_CONTAINER_COMP TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
EVENT_RECEIVER
TYPE REF TO LCL_EVENT_RECEIVER,
GRID1
TYPE REF TO CL_GUI_ALV_GRID,
GRID2
TYPE REF TO CL_GUI_ALV_GRID,
GRID_COMP
TYPE REF TO CL_GUI_ALV_GRID.
*
*
* DECLARACION DE VARIABLES
*
*
DATA: G_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE,
L_HIERARCHY_HEADER TYPE TREEV_HHDR,
GS_FIELDCAT TYPE LVC_S_FCAT,
GT_FIELDCAT_TREE TYPE LVC_T_FCAT,
GT_FIELDCAT_COMP TYPE LVC_T_FCAT,
G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
* 0.Define a reference variable for the toolbar.
G_TOOLBAR
TYPE REF TO CL_GUI_TOOLBAR.
*----------------------------------------------------------------------*
*
CLASS LCL_TREE_EVENT_RECEIVER DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_TREE_EVENT_RECEIVER DEFINITION.
*
PUBLIC SECTION.
Define an event handler method for each event you want to react to.
METHODS: HANDLE_NODE_DOUBLE_CLICK
FOR EVENT NODE_DOUBLE_CLICK
OF CL_GUI_ALV_TREE
IMPORTING NODE_KEY SENDER.
METHODS: ON_FUNCTION_SELECTED
FOR EVENT FUNCTION_SELECTED OF CL_GUI_TOOLBAR
IMPORTING FCODE.
METHODS: HANDLE_USER_COMMAND
FOR EVENT AFTER_USER_COMMAND
OF CL_GUI_ALV_TREE
IMPORTING UCOMM SENDER.
*
*
*
*
*
*
*
*
METHODS: GET_TOOLBAR_OBJECT
FOR EVENT GET_TOOLBAR_OBJECT
OF CL_GUI_ALV_TREE
IMPORTING ER_TOOLBAR.
*
*
*
*
METHODS: HANDLE_USER_COMMAND
FOR EVENT AFTER_USER_COMMAND
OF CL_GUI_ALV_TREE
IMPORTING I_FCODE. "UCOMM.
METHODS: HANDLE_USER_COMMAND
FOR EVENT AFTER_USER_COMMAND
OF CL_GUI_ALV_TREE
IMPORTING UCOMM.
ENDCLASS.
"LCL_TREE_EVENT_RECEIVER DEFINITION
*----------------------------------------------------------------------*
*
CLASS LCL_TREE_EVENT_RECEIVER IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_TREE_EVENT_RECEIVER IMPLEMENTATION.
**Implement your event handler methods.
METHOD HANDLE_NODE_DOUBLE_CLICK.
DATA: LV_NODEKEY
TYPE LVC_NKEY.
DATA: LT_SELECTED_NODES TYPE LVC_T_NKEY,
L_SELECTED_NODE TYPE LVC_NKEY.
*
DATA: LWA_READ LIKE T_VBAK.
LV_NODEKEY = NODE_KEY - 1.
*
*
*
PERFORM LEER_LIQUIDACION.
ENDMETHOD.
"HANDLE_NODE_DOUBLE_CLICK
METHOD ON_FUNCTION_SELECTED.
DATA: LT_SELECTED_NODES TYPE LVC_T_NKEY,
L_SELECTED_NODE TYPE LVC_NKEY,
L_RC
TYPE C.
*
*
*
**
*
*
*
*
*
P_COMPANYCODE
P_CUSTOMER
P_DATE_FROM
P_DATE_TO
*DATA: LV_NODEKEY
TYPE
TYPE
TYPE
TYPE
BAPI3007_1-COMP_CODE,
BAPI3007_1-CUSTOMER,
BAPI3007-FROM_DATE,
BAPI3007-TO_DATE.
TYPE LVC_NKEY.
"ON_FUNCTION_SELECTED
METHOD HANDLE_USER_COMMAND.
DATA: LT_ROWS TYPE LVC_T_ROW.
DATA: LF_ANSWR TYPE C.
*
*
*
*
*
*
*
*
*
*
*
**
**
**
**
*
CASE UCOMM.
WHEN ''. "'COMPENSAR'.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
DEFAULTOPTION = 'N'
TEXTLINE1
= ' Desea Compensar los documentos marcados ?'
TITEL
= 'Playas de Estacionamiento'
CANCEL_DISPLAY = 'X'
IMPORTING
ANSWER
= LF_ANSWR.
IF LF_ANSWR EQ 'J'.
PERFORM C03_COMPENSAR.
quitando los documentos provisionados
DELETE TI_LIQCOB WHERE CHECK EQ 'X'.
actualizando la grilla
CALL METHOD GRID1->REFRESH_TABLE_DISPLAY.
*
*
*
**
*
**
*
ENDIF.
WHEN 'Marcar'.
PERFORM MARCAR_CHBOX USING 'X'.
WHEN 'Desmarcar'.
PERFORM MARCAR_CHBOX USING ' '.
ENDCASE.
ENDMETHOD.
ENDCLASS.
"handle_user_command
"LCL_TREE_EVENT_RECEIVER IMPLEMENTATION
IF ( R_COMP EQ 'X' ).
CLEAR LS_TOOLBAR.
MOVE 'COMPENSAR' TO LS_TOOLBAR-FUNCTION.
MOVE ICON_EXECUTE_OBJECT TO LS_TOOLBAR-ICON.
MOVE 'Compensar' TO LS_TOOLBAR-QUICKINFO.
MOVE 'Compensar' TO LS_TOOLBAR-TEXT.
MOVE ' ' TO LS_TOOLBAR-DISABLED.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
CLEAR LS_TOOLBAR.
MOVE 'Marcar'
MOVE ICON_SELECT_ALL
MOVE 'Marcar'
APPEND LS_TOOLBAR
TO
TO
TO
TO
LS_TOOLBAR-FUNCTION.
LS_TOOLBAR-ICON.
LS_TOOLBAR-QUICKINFO.
E_OBJECT->MT_TOOLBAR.
*
*
*
*
*
*
CLEAR LS_TOOLBAR.
MOVE 'Desmarcar'
MOVE ICON_DESELECT_ALL
MOVE 'Desmarcar'
APPEND LS_TOOLBAR
ENDIF.
ENDMETHOD.
TO
TO
TO
TO
LS_TOOLBAR-FUNCTION.
LS_TOOLBAR-ICON.
LS_TOOLBAR-QUICKINFO.
E_OBJECT->MT_TOOLBAR.
"handle_toolbar
METHOD HANDLE_USER_COMMAND.
DATA: LT_ROWS TYPE LVC_T_ROW.
DATA: LF_ANSWR TYPE C.
CASE E_UCOMM.
WHEN 'COMPENSAR'.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
"handle_user_command
METHOD HANDLE_DOUBLE_CLICK.
DATA: LWA_READ LIKE TI_OUTPUT.
READ TABLE TI_OUTPUT INDEX E_ROW-INDEX INTO LWA_READ.
SET PARAMETER ID 'BUK' FIELD P_BUKRS.
SET PARAMETER ID 'BLN' FIELD LWA_READ-BELNR.
SET PARAMETER ID 'GJR' FIELD P_GJAHR.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDMETHOD.
"handle_double_click
ENDCLASS.
*
"lcl_event_receiver IMPLEMENTATION
*
* SELECTION-SCREEN
*
*
*SELECTION-SCREEN BEGIN OF SCREEN 1001.
*SELECTION-SCREEN END OF SCREEN 1001.
**&--------------------------------------------------------------------&*
**
AT SELECTION-SCREEN.
**&--------------------------------------------------------------------&*
* deshabilitando la edicion del campo
AT SELECTION-SCREEN OUTPUT.
IF G_BLOQUEO_WERKS EQ 'X'.
LOOP AT SCREEN.
CASE SCREEN-NAME.
WHEN 'P_WERKS'.
SCREEN-INPUT = '0'. MODIFY SCREEN.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
ENDIF.
*
*
*
*
*
INITIALIZATION.
* obtiene sociedad a traves de la org de ventas
* obteniendo la sociedad de la org de ventas
SELECT SINGLE BUKRS INTO P_BUKRS
FROM TVKO
WHERE VKORG EQ P_VKORG.
PERFORM OBTIENE_CLASE_DOC.
SELECT SINGLE PARVA
INTO P_WERKS
FROM USR05
WHERE BNAME = SY-UNAME
AND PARID = 'WEK'.
* IF NOT P_WERKS IS INITIAL.
*
APPEND _WERKS.
* ENDIF.
*
*
*
* START-OF-SELECTION
*
*
START-OF-SELECTION.
PERFORM OBTENER_DATOS.
IF G_ALV_TREE IS INITIAL.
PERFORM INIT_TREE.
L_TREE_CONTAINER_NAME
1
2
3
4
5.
= G_CUSTOM_CONTAINER
= 'X'
= CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_SINGLE
= ''
= 'X'
= ''
=
=
=
=
=
=
=
1
2
3
4
5
6
7.
PERFORM FILL_CATALOG_TREE.
PERFORM BUILD_HIERARCHY_HEADER CHANGING L_HIERARCHY_HEADER.
CALL METHOD G_ALV_TREE->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_HIERARCHY_HEADER = L_HIERARCHY_HEADER
CHANGING
IT_OUTTAB
= T_TREE[]
IT_FIELDCATALOG
= GT_FIELDCAT_TREE.
PERFORM CREATE_HIERARCHY.
PERFORM CHANGE_TOOLBAR.
PERFORM FM_REGISTER_EVENT.
ENDFORM.
"INIT_TREE
*&---------------------------------------------------------------------*
*&
Form INIT_CONTAINER
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM INIT_CONTAINER USING W_BSTNK TYPE VBAK-BSTNK.
DATA: L_CONTAINER_NAME(30) TYPE C.
L_CONTAINER_NAME = 'CC_CONTENEDOR'.
REFRESH: GT_FIELDCAT_TREE.
CLEAR: GT_FIELDCAT_TREE.
PERFORM FILL_CATALOG_CONTAINER.
PERFORM OBTENER_DATOS_DETALLE USING W_BSTNK.
IF CUSTOM_CONTAINER1 IS INITIAL.
Creando el ALV
CREATE OBJECT CUSTOM_CONTAINER1
EXPORTING
CONTAINER_NAME
EXCEPTIONS
CNTL_ERROR
CNTL_SYSTEM_ERROR
CREATE_ERROR
LIFETIME_ERROR
LIFETIME_DYNPRO_DYNPRO_LINK
= L_CONTAINER_NAME
=
=
=
=
=
1
2
3
4
5.
IF SY-SUBRC NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL = SY-REPID
TXT2 = SY-SUBRC
TXT1 = 'ERROR'(510).
ENDIF.
*
Si todo esta OK
CREATE OBJECT GRID1
EXPORTING
I_PARENT = CUSTOM_CONTAINER1.
I_APPL_EVENTS = 'X'.
CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_TOOLBAR_EXCLUDING = PT_EXCLUDE
IS_LAYOUT
= GS_LAYOUT
I_SAVE
= 'A'
CHANGING
IT_OUTTAB
= TI_OUTPUT[]
"reporte (consulta)
IT_FIELDCATALOG
= GT_FIELDCAT_TREE. "GT_FIELDCAT.
ELSE.
actualizando la grilla
CALL METHOD GRID1->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDFORM.
"INIT_CONTAINER
*&---------------------------------------------------------------------*
*&
Form INIT_CONTAINER_COMP
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM INIT_CONTAINER_COMP.
DATA: L_CONTAINER_NAME(30) TYPE C.
L_CONTAINER_NAME = 'CC_COMPENSACION'.
REFRESH: GT_FIELDCAT_COMP.
CLEAR: GT_FIELDCAT_COMP.
PERFORM FILL_CATALOG_CONTAINER_COMP.
PERFORM OBTENER_DATOS_COMP.
*
IF CUSTOM_CONTAINER_COMP IS INITIAL.
Creando el ALV
CREATE OBJECT CUSTOM_CONTAINER_COMP
EXPORTING
CONTAINER_NAME
= L_CONTAINER_NAME
EXCEPTIONS
CNTL_ERROR
= 1
CNTL_SYSTEM_ERROR
= 2
CREATE_ERROR
= 3
LIFETIME_ERROR
= 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL = SY-REPID
TXT2 = SY-SUBRC
TXT1 = 'ERROR'(510).
ENDIF.
Si todo esta OK
CREATE OBJECT GRID_COMP
EXPORTING
I_PARENT = CUSTOM_CONTAINER_COMP.
I_APPL_EVENTS = 'X'.
CALL METHOD GRID_COMP->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_TOOLBAR_EXCLUDING
IS_LAYOUT
I_SAVE
CHANGING
IT_OUTTAB
IT_FIELDCATALOG
*
*
*
*
= PT_EXCLUDE
= GS_LAYOUT
= 'A'
= T_LINEITEMS[]
"reporte (consulta)
= GT_FIELDCAT_COMP. "GT_FIELDCAT.
ELSE.
actualizando la grilla
CALL METHOD GRID_COMP->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDFORM.
"INIT_CONTAINER_COMP
*
*
* FORM FILL_CATALOG_TREE
*
*
FORM FILL_CATALOG_TREE.
= 1.
= 'Fecha'.
= 'Fecha'.
= 'AUDAT'.
= 'DATS'.
= 'T_VBAK'.
= '20'.
GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME =
APPEND GS_FIELDCAT TO
= 2.
= 'Liquidacion'.
= 'Liquidacion'.
= 'BSTNK'.
= '20'.
'T_VBAK'.
GT_FIELDCAT_TREE.
ENDFORM.
"FILL_CATALOG_TREE
*
*
*
FORM build_hierarchy_header
*
*
FORM BUILD_HIERARCHY_HEADER CHANGING
P_HIERARCHY_HEADER TYPE TREEV_HHDR.
CLEAR P_HIERARCHY_HEADER.
P_HIERARCHY_HEADER-HEADING = 'Cliente TUUA Manual'(300).
P_HIERARCHY_HEADER-WIDTH = 28.
P_HIERARCHY_HEADER-WIDTH_PIX = ' '.
ENDFORM.
"BUILD_HIERARCHY_HEADER
*
*
*
FORM create_hierarchy
*
*
FORM CREATE_HIERARCHY.
"CREATE_HIERARCHY
*
*
*
FORM ADD_NODE
*
*
FORM ADD_NODE USING L_NAME L_ROOT_KEY
CHANGING L_NEXT_KEY.
DATA: L_NODE_TEXT TYPE LVC_VALUE,
LS_TREE TYPE TY_VBAK.
L_NODE_TEXT = L_NAME.
CALL METHOD G_ALV_TREE->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = L_ROOT_KEY
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
I_NODE_TEXT
= L_NODE_TEXT
IS_OUTTAB_LINE = LS_TREE
IMPORTING
E_NEW_NODE_KEY = L_NEXT_KEY.
ENDFORM.
"ADD_NODE
*
*
*
FORM ADD_LEAF
*
*
FORM ADD_LEAF USING L_TREE TYPE TY_VBAK
L_NEXT_KEY
CHANGING L_LAST_KEY.
CLEAR: W_CHAR.
READ TABLE TI_VBAK_CAB WITH KEY VBELN = TI_VBAP-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_VBAK-KUNNR = TI_VBAK_CAB-KUNNR.
T_VBAK-BSTNK = TI_VBAK_CAB-BSTNK.
ENDIF.
READ TABLE TI_VBKD WITH KEY VBELN = TI_VBAP-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
CLEAR: W_CHAR.
CONCATENATE TI_VBAK_CAB-IHREZ+6(4) '' TI_VBAK_CAB-IHREZ+3(2) '' TI_VBAK_C
AB-IHREZ(2) INTO W_CHAR.
T_VBAK-AUDAT = W_CHAR. "TI_VBAK_CAB-IHREZ.
ENDIF.
APPEND T_VBAK.
ENDLOOP.
DELETE T_VBAK WHERE AUDAT EQ ''.
DELETE T_VBAK WHERE AUDAT NOT IN S_AUDAT.
DELETE ADJACENT DUPLICATES FROM T_VBAK.
SORT T_VBAK BY BSTNK.
IF SY-SUBRC EQ 0.
LOOP AT T_VBAK ASSIGNING <VBAK>.
MOVE <VBAK>-KUNNR TO T_HEADER-KUNNR.
APPEND T_HEADER.
ENDLOOP.
SORT T_HEADER.
DELETE ADJACENT DUPLICATES FROM T_HEADER.
ENDIF.
SORT T_VBAK BY BSTNK DESCENDING.
ENDFORM.
"OBTENER_DATOS
*&---------------------------------------------------------------------*
*&
Form FM_REGISTER_EVENT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM FM_REGISTER_EVENT .
*Define local variables
DATA: LT_EVENTS
TYPE CNTL_SIMPLE_EVENTS,
L_EVENT
TYPE CNTL_SIMPLE_EVENT,
L_EVENT_RECEIVER TYPE REF TO LCL_TREE_EVENT_RECEIVER.
*Get register events
CALL METHOD G_ALV_TREE->GET_REGISTERED_EVENTS
IMPORTING
EVENTS = LT_EVENTS.
*Frontend registration: add additional event ids
L_EVENT-EVENTID = CL_GUI_COLUMN_TREE=>EVENTID_NODE_DOUBLE_CLICK.
APPEND L_EVENT TO LT_EVENTS.
* CLEAR: L_EVENT.
* L_EVENT-EVENTID = CL_GUI_COLUMN_TREE=>EVENTID_SELECTION_CHANGED.
* APPEND L_EVENT TO LT_EVENTS.
*Frontend registration:provide new event table to alv tree
CALL METHOD G_ALV_TREE->SET_REGISTERED_EVENTS
EXPORTING
EVENTS
= LT_EVENTS
EXCEPTIONS
CNTL_ERROR
= 1
CNTL_SYSTEM_ERROR
= 2
ILLEGAL_EVENT_COMBINATION = 3.
CREATE OBJECT L_EVENT_RECEIVER.
SET HANDLER L_EVENT_RECEIVER->HANDLE_NODE_DOUBLE_CLICK FOR G_ALV_TREE.
SET HANDLER L_EVENT_RECEIVER->ON_FUNCTION_SELECTED FOR G_TOOLBAR.
* SET HANDLER L_EVENT_RECEIVER->HANDLE_USER_COMMAND FOR G_ALV_TREE.
ENDFORM.
" FM_REGISTER_EVENT
*&---------------------------------------------------------------------*
*&
Form OBTENER_DATOS_DETALLE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM OBTENER_DATOS_DETALLE USING W_BSTNK TYPE VBAK-BSTNK.
DATA: TI_VBAK_CAB LIKE STANDARD TABLE OF VBAK WITH HEADER LINE,
TI_VBAP LIKE STANDARD TABLE OF VBAP WITH HEADER LINE,
TI_VBFA LIKE STANDARD TABLE OF VBFA WITH HEADER LINE,
TI_VBRK LIKE STANDARD TABLE OF VBRK WITH HEADER LINE,
TI_BKPF LIKE STANDARD TABLE OF BKPF WITH HEADER LINE.
REFRESH: TI_OUTPUT.
CLEAR: TI_OUTPUT.
SELECT * INTO CORRESPONDING FIELDS OF TABLE TI_VBAK_CAB
FROM VBAK AS A
INNER JOIN VBAP AS B
ON ( A~VBELN EQ B~VBELN )
WHERE
A~AUART IN S_AUART AND
A~VKORG EQ P_VKORG AND
A~VTWEG EQ P_VTWEG AND
A~SPART EQ P_SPART AND
A~KUNNR EQ P_KUNNR AND
A~BSTNK EQ W_BSTNK AND
B~WERKS EQ P_WERKS.
SORT TI_VBAK_CAB BY VBELN.
IF NOT TI_VBAK_CAB[] IS INITIAL.
** trae datos de posicion del pedido
SELECT * INTO CORRESPONDING FIELDS OF TABLE TI_VBAP
FROM VBAP FOR ALL ENTRIES IN TI_VBAK_CAB[]
WHERE
VBELN EQ TI_VBAK_CAB-VBELN AND
WERKS EQ P_WERKS.
SORT TI_VBAP BY VBELN.
<FS_VBFA>
<FS_VBAP>
<FS_VBRK>
<FS_BKPF>
LIKE
LIKE
LIKE
LIKE
LINE
LINE
LINE
LINE
OF
OF
OF
OF
TI_VBFA.
TI_VBAP.
TI_VBRK.
TI_BKPF.
*
*
*
*
*
*
*
*
*
*
*
*
*
ENDFORM.
"OBTENER_DATOS
*&---------------------------------------------------------------------*
*&
Form detalle_compensa
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM DETALLE_COMPENSA.
DELETE ADJACENT DUPLICATES FROM TI_OUTPUT.
LOOP AT TI_OUTPUT.
CLEAR: W_COMPENSA.
W_COMPENSA-ESTAD = 'PENDIENTE'.
MOVE W_FELIQU TO W_COMPENSA-FELIQU.
MOVE W_BSTNK TO W_COMPENSA-LIQU.
MOVE 'PEN' TO W_COMPENSA-WAERS.
SELECT AUGBL ZUONR AUGDT
INTO (W_COMPENSA-BELNR,
W_COMPENSA-LIQU,
W_COMPENSA-BUDAT)
FROM BSAD
WHERE BUKRS EQ P_BUKRS AND
KUNNR EQ P_KUNNR AND
"detalle_compensa
*&---------------------------------------------------------------------*
*&
Form OBTIENE_CLASE_DOC
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM OBTIENE_CLASE_DOC .
CLEAR: S_AUART.
S_AUART-SIGN = 'I'.
S_AUART-OPTION = 'EQ'.
S_AUART-LOW
= 'ZTA1'. "Pedido PlayasA Fact.
APPEND S_AUART.
*
*
*
*
*
*
*
*
S_AUART-LOW
= 'ZPA2'."Pedido PlayasA Bol.
APPEND S_AUART.
S_AUART-LOW
= 'ZPM1'."Pedido PlayasM Fact.
APPEND S_AUART.
S_AUART-LOW
= 'ZPM2'."Pedido PlayasM Bol.
APPEND S_AUART.
ENDFORM.
" obtiene_tipo_doc
*&---------------------------------------------------------------------*
*&
Form contabilizar
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
FORM CONTABILIZAR .
DATA: W_DMBTR(13) TYPE C,
W_SGTXT(25) TYPE C,
W_XBLNR
TYPE BKPF-XBLNR,
W_BUDAT(10) TYPE C,
W_RUC(11) TYPE C,
W_BKTXT LIKE BKPF-BKTXT.
" numero LC
" fecha de contabilizacion
" RUC
' '
'BDC_CURSOR'
'BDC_OKCODE'
'BKPF-BLDAT'
'BKPF-BLART'
'BKPF-BUKRS'
'BKPF-BUDAT'
'BKPF-MONAT'
'BKPF-WAERS'
'BKPF-XBLNR'
'BKPF-BKTXT'
'FS006-DOCID'
'RF05A-NEWBS'
' ',
'RF05A-NEWKO',
'/00',
W_BUDAT,
'D5',
P_BUKRS,
W_BUDAT,
W_BUDAT+3(2),
W_COMPENSA-WAERS,
W_COMPENSA-LIQU,
W_BKTXT,
'*',
'40',
" clave de contab
' '
'BDC_CURSOR'
'BDC_OKCODE'
'BSEG-WRBTR'
'BSEG-MWSKZ'
'BSEG-VALUT'
'BSEG-ZUONR'
' '
'BDC_CURSOR'
'BDC_OKCODE'
' ',
'RF05A-NEWBS',
'=SL',
W_DMBTR,
'**',
W_BUDAT,
W_COMPENSA-ZUONR.
' ',
'RF05A-NEWBS',
'=SL',
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'BSEG-WRBTR'
'BSEG-VALUT'
'BSEG-ZUONR'
W_DMBTR,
W_BUDAT,
W_COMPENSA-ZUONR.
' '
'BDC_CURSOR'
'BDC_OKCODE'
'COBL-GSBER'
'BDC_SUBSCR'
' '
'BDC_CURSOR'
'BDC_OKCODE'
'RF05A-AGBUK'
'RF05A-AGKON'
' ',
'COBL-GSBER',
'=ENTER',
' ',
'SAPLKACB
' ',
'RF05A-XPOS1(09)',
'/00',
P_BUKRS,
P_KUNNR,
" cliente P
'RF05A-AGKOA' 'D',
'RF05A-XNOPS' 'X',
'RF05A-XPOS1(01)' ' ',
'RF05A-XPOS1(09)' 'X'.
' '
' ',
'BDC_CURSOR' 'RF05A-SEL01(01)',
'BDC_OKCODE' '/00',
'RF05A-SEL01(01)' W_COMPENSA-LIQU.
' '
'BDC_CURSOR'
'BDC_OKCODE'
' ',
'RF05A-SEL01(01)',
'=PA'.
* JM
IF CHK_PARCIAL EQ 'X'.
*
*
*
*
' '
'BDC_OKCODE'
'BDC_SUBSCR'
' ',
'=PART',
'SAPDF05X
'BDC_CURSOR'
'RF05A-ABPOS'.
===========================================================================
lgica para identificar la posicin del documento a aplicar el pago parcial
===========================================================================
desactivarlas)
' '
'BDC_OKCODE'
'BDC_SUBSCR'
' ',
'=OMX',
'SAPDF05X
'BDC_CURSOR'
'DF05B-PSBET(01)'.
' '
'BDC_OKCODE'
'BDC_SUBSCR'
' ',
'=Z-',
'SAPDF05X
'BDC_CURSOR'
'RF05A-ABPOS'.
' '
'BDC_OKCODE'
'BDC_SUBSCR'
' ',
'=PI',
'SAPDF05X
'BDC_CURSOR'
'DF05B-PSBET(01)'.
' '
'BDC_OKCODE'
'BDC_SUBSCR'
' ',
'/00',
'SAPDF05X
simulando
PERFORM LLENAR_BDCDATA USING:
'SAPDF05X'
'3100'
'X'
' '
' '
' '
' '
' '
' '
6104PAGE',
' '
' '
' '
' '
'BDC_OKCODE'
'BDC_SUBSCR'
' ',
'=BS',
'SAPDF05X
'BDC_CURSOR'
'DF05B-PSZAH(01)'.
' '
'BDC_CURSOR'
'BDC_OKCODE'
' ',
'RF05A-NEWBS',
'=BU'.
ELSE.
Pago total
PERFORM LLENAR_BDCDATA USING:
'SAPDF05X'
'3100'
'X'
' '
' '
' '
' '
' '
' '
6102PAGE',
' '
' '
' '
' '
'BDC_OKCODE'
'BDC_SUBSCR'
' ',
'=OMX',
'SAPDF05X
'BDC_CURSOR'
'DF05B-PSSKT(01)'.
' '
'BDC_OKCODE'
'BDC_SUBSCR'
' ',
'=Z+',
'SAPDF05X
grabando
PERFORM LLENAR_BDCDATA USING:
'SAPMF05A'
'0700'
'X'
' '
' '
' '
' '
' '
' '
'BDC_CURSOR' 'DF05B-PSZAH(01)',
'DF05B-PSZAH(01)' W_DMBTR.
'
'
6102PAGE',
' '
'
'
'DF05B-PSSKT(01)'.
' '
'BDC_OKCODE'
'BDC_SUBSCR'
' ',
'=BU',
'SAPDF05X
'BDC_CURSOR'
'DF05B-PSSKT(01)'.
'BDC_CURSOR'
ENDIF.
CALL TRANSACTION 'F-51' USING BDCDATA
MODE P_MODEB
MESSAGES INTO BDMSGCALL.
PERFORM DETALLE_COMPENSA.
ENDFORM.
"contabilizar
***&---------------------------------------------------------------------*
***&
Form 03_compensar
***&---------------------------------------------------------------------*
***
text
***----------------------------------------------------------------------*
FORM C03_COMPENSAR.
DATA: W_BUDAT LIKE BSID-BUDAT.
CLEAR: BDCDATA, W_BUDAT.
REFRESH BDCDATA.
PERFORM CONTABILIZAR.
* refrescando la lista de compensaciones
PERFORM INIT_CONTAINER_COMP.
ENDFORM.
"C03_compensar
**
***&---------------------------------------------------------------------*
***&
Form llenar_bdcdata
***&---------------------------------------------------------------------*
***----------------------------------------------------------------------*
FORM LLENAR_BDCDATA USING PROGRAM DYNPRO DYNBEGIN FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = DYNBEGIN.
BDCDATA-FNAM
= FNAM.
BDCDATA-FVAL
= FVAL.
APPEND BDCDATA.
ENDFORM.
"llenar_bdcdata
*&---------------------------------------------------------------------*
*&
Module STATUS_0300 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE STATUS_0300 OUTPUT.
SET PF-STATUS 'MAIN100'.
CLEAR OK_CODE.
ENDMODULE.
" USER_COMMAND_0300 INPUT
*&---------------------------------------------------------------------*
*&
Form FILL_CATALOG_CONTAINER
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM FILL_CATALOG_CONTAINER .
DATA: GS_FIELDCAT_ADD TYPE LVC_S_FCAT.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
* GS_FIELDCAT-DATATYPE
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME
APPEND GS_FIELDCAT TO
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
* GS_FIELDCAT-DATATYPE
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME
APPEND GS_FIELDCAT TO
=
=
=
=
1.
'Clase'.
'Clase'.
'AUART'.
= 'DATS'.
= '6'.
= 'TI_OUTPUT'.
GT_FIELDCAT_TREE.
=
=
=
=
2.
'Pedido'.
'Pedido'.
'VBELN'.
= 'DATS'.
= '10'.
= 'TI_OUTPUT'.
GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-DATATYPE
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME
APPEND GS_FIELDCAT TO
= 3.
= 'Fecha'.
= 'Fecha'.
= 'AUDAT'.
= 'DATS'.
= '10'.
= 'TI_OUTPUT'.
GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME =
APPEND GS_FIELDCAT TO
= 4.
= 'Factura'.
= 'Factura'.
= 'VBEL1'.
= '10'.
'TI_OUTPUT'.
GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
=
=
=
=
=
5.
'Asiento'.
'Asiento'.
'BELNR'.
'10'.
GS_FIELDCAT-TABNAME = 'TI_OUTPUT'.
APPEND GS_FIELDCAT TO GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME =
APPEND GS_FIELDCAT TO
= 6.
= 'Nro Sunat'.
= 'Nro Sunat'.
= 'XBLN1'.
= '16'.
'TI_OUTPUT'.
GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME =
APPEND GS_FIELDCAT TO
= 7.
= 'Moneda'.
= 'Moneda'.
= 'WAERS'.
= '5'.
'TI_OUTPUT'.
GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME =
APPEND GS_FIELDCAT TO
= 8.
= 'Importe'.
= 'Importe'.
= 'NETWR'.
= '6'.
'TI_OUTPUT'.
GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME =
APPEND GS_FIELDCAT TO
= 9.
= 'Cant.'.
= 'Cant.'.
= 'ZMENG'.
= '6'.
'TI_OUTPUT'.
GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME =
APPEND GS_FIELDCAT TO
= 10.
= 'IGV'.
= 'IGV'.
= 'TIGV'.
= '6'.
'TI_OUTPUT'.
GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME
GS_FIELDCAT-DO_SUM
APPEND GS_FIELDCAT TO
= 11.
= 'Total'.
= 'Total'.
= 'TTOTA'.
= '10'.
= 'TI_OUTPUT'.
= 'X'.
GT_FIELDCAT_TREE.
ENDFORM.
" FILL_CATALOG_CONTAINER
*&---------------------------------------------------------------------*
*&
Form FILL_CATALOG_CONTAINER_COMP
*&---------------------------------------------------------------------*
FORM FILL_CATALOG_CONTAINER_COMP .
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME
GS_FIELDCAT-NO_OUT
APPEND GS_FIELDCAT TO
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
* GS_FIELDCAT-DATATYPE
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME
APPEND GS_FIELDCAT TO
= 1.
= 'Nro.Liq.'.
= 'Nro.Liq.'.
= 'ALLOC_NMBR'.
= '10'.
= 'T_LINEITEMS'.
= 'X'.
GT_FIELDCAT_COMP.
=
=
=
=
2.
'Asiento'.
'Asiento'.
'DOC_NO'.
= 'DATS'.
= '12'.
= 'T_LINEITEMS'.
GT_FIELDCAT_COMP.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-DATATYPE
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME
APPEND GS_FIELDCAT TO
= 3.
= 'Fec. Cont.'.
= 'Fec. Cont.'.
= 'PSTNG_DATE'.
= 'DATS'.
= '10'.
= 'T_LINEITEMS'.
GT_FIELDCAT_COMP.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME
APPEND GS_FIELDCAT TO
= 4.
= 'Mon'.
= 'Mon'.
= 'CURRENCY'.
= '5'.
= 'T_LINEITEMS'.
GT_FIELDCAT_COMP.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME
GS_FIELDCAT-DO_SUM
APPEND GS_FIELDCAT TO
= 5.
= 'Importe Doc'.
= 'Importe Doc'.
= 'AMT_DOCCUR'.
= '13'.
= 'T_LINEITEMS'.
= 'X'.
GT_FIELDCAT_COMP.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
=
=
=
=
=
6.
'Importe ML'.
'Importe ML'.
'LC_AMOUNT'.
'13'.
GS_FIELDCAT-TABNAME = 'T_LINEITEMS'.
GS_FIELDCAT-DO_SUM
= 'X'.
APPEND GS_FIELDCAT TO GT_FIELDCAT_COMP.
*
*
*
*
*
*
*
*
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS
GS_FIELDCAT-REPTEXT
GS_FIELDCAT-SCRTEXT_S
GS_FIELDCAT-FIELDNAME
GS_FIELDCAT-OUTPUTLEN
GS_FIELDCAT-TABNAME
APPEND GS_FIELDCAT TO
ENDFORM.
= 7.
= 'Voucher'.
= 'Voucher'.
= 'LC_AMOUNT'.
= '10'.
= 'T_LINEITEMS'.
GT_FIELDCAT_COMP.
" FILL_CATALOG_CONTAINER
*&---------------------------------------------------------------------*
*&
Module detalle_compensa INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE DETALLE_COMPENSA INPUT.
* PERFORM INIT_CONTAINER USING W_BSTNK.
ENDMODULE.
" detalle_compensa INPUT
*&---------------------------------------------------------------------*
*&
Form CHANGE_TOOLBAR
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM CHANGE_TOOLBAR.
*
*
*
*
*
*&---------------------------------------------------------------------*
*&
Form OBTENER_DATOS_COMP
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_W_BSTNK text
*----------------------------------------------------------------------*
FORM OBTENER_DATOS_COMP.
DATA: P_DATE_FROM LIKE SY-DATUM.
P_DATE_FROM = SY-DATUM - P_DAYANT.
CALL FUNCTION 'BAPI_AR_ACC_GETSTATEMENT'
EXPORTING
COMPANYCODE = P_BUKRS
CUSTOMER
= P_KUNNR
DATE_FROM = P_DATE_FROM
DATE_TO
= SY-DATUM
TABLES
LINEITEMS = T_LINEITEMS.
DELETE T_LINEITEMS
WHERE ( REF_DOC_NO NE W_COMPENSA-LIQU ) OR ( DOC_TYPE NE 'D5' ).
ENDFORM.
" OBTENER_DATOS_COMP
*&---------------------------------------------------------------------*
*&
Form LEER_LIQUIDACION
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM LEER_LIQUIDACION.
DATA: LT_SELECTED_NODES TYPE LVC_T_NKEY,
L_SELECTED_NODE TYPE LVC_NKEY,
L_RC
TYPE C.
CALL METHOD G_ALV_TREE->GET_SELECTED_NODES
CHANGING
CT_SELECTED_NODES = LT_SELECTED_NODES.
CALL METHOD CL_GUI_CFW=>FLUSH.
READ TABLE LT_SELECTED_NODES INTO L_SELECTED_NODE INDEX 1.
DATA: LWA_READ LIKE T_VBAK.
L_SELECTED_NODE = L_SELECTED_NODE - 1.
READ TABLE T_VBAK INDEX L_SELECTED_NODE INTO LWA_READ.
W_BSTNK = LWA_READ-BSTNK.
W_FELIQU = LWA_READ-AUDAT.
MOVE W_BSTNK TO W_COMPENSA-LIQU.
MOVE W_FELIQU TO W_COMPENSA-FELIQU.
IF SY-SUBRC EQ 0.
PERFORM INIT_CONTAINER USING LWA_READ-BSTNK.
* JM
* listar compensaciones de la liquidacin
PERFORM INIT_CONTAINER_COMP.
ENDIF.
ENDFORM.
"LEER_LIQUIDACION