0% found this document useful (0 votes)
213 views30 pages

ZTRR0003A1

This document describes a report for compensating manual TUUA transactions in SAP. It includes declarations of internal tables and field symbols to store and process transaction data. It also defines selection screen parameters and dynamic programming elements like a toolbar, event handler classes and ALV grid controls for displaying results. The objective is to provide a user interface to view liquidation documents, select transactions for compensation and process the compensation.

Uploaded by

jhon1986
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
213 views30 pages

ZTRR0003A1

This document describes a report for compensating manual TUUA transactions in SAP. It includes declarations of internal tables and field symbols to store and process transaction data. It also defines selection screen parameters and dynamic programming elements like a toolbar, event handler classes and ALV grid controls for displaying results. The objective is to provide a user interface to view liquidation documents, select transactions for compensation and process the compensation.

Uploaded by

jhon1986
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 30

*&---------------------------------------------------------------------*

*& Report ZTRR0003A


*&
*&---------------------------------------------------------------------*
*& Objetivo
: Compensacin de TUUA Manual
*& Autor
: Daniel Tuesta U.
*& Fecha Creacin
: 03.11.2014
*& Transaccin
: ZTR003A
*&---------------------------------------------------------------------*
*& LOG DE MODIFICACIONES
*&---------------------------------------------------------------------*
*& ID AUTHOR
DATE
DESCRIPTION
*& --- -------------- -------- -------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTRR0003A1.
TABLES: BSID, BSAD, VBAK, VBFA, VBPA.
*
*
* DECLARACION DE TYPES
*
*
TYPES: BEGIN OF TY_VBAK,
KUNNR TYPE VBAK-KUNNR,
AUDAT TYPE VBAK-AUDAT,
BSTNK TYPE VBAK-BSTNK,
END OF TY_VBAK.
TYPES: BEGIN OF TY_OUTPUT ,
BSTNK TYPE VBAK-BSTNK,
AUART TYPE VBAK-AUART,
AUDAT TYPE VBAK-AUDAT,
VBELN TYPE VBAK-VBELN,
VBEL1 TYPE VBRK-VBELN,
BELNR TYPE BKPF-BELNR,
XBLNR TYPE BKPF-XBLNR,
XBLN1(20) TYPE C,
WAERS TYPE BKPF-WAERS,
NETWR TYPE VBRP-NETWR,
ZMENG TYPE VBAP-ZMENG,
TIGV TYPE VBRP-NETWR,
TTOTA TYPE VBRP-NETWR,
END OF TY_OUTPUT .
TYPES: BEGIN OF TY_HEADER,
KUNNR TYPE VBAK-KUNNR,
END OF TY_HEADER.
TYPES: BEGIN OF TY_COMPENSA,
BELNR
TYPE BKPF-BELNR,
ZUONR
TYPE BSID-ZUONR,
HKONT
TYPE BSID-HKONT,
BUDAT
TYPE BKPF-BUDAT,
WAERS
TYPE BKPF-WAERS,
DMBTR
TYPE BSID-DMBTR,
LIQU(8)
TYPE C,
ESTAD(15) TYPE C,
FELIQU
TYPE BKPF-BUDAT,

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.

DATA: TI_VBAK TYPE STANDARD TABLE OF VBAK WITH HEADER LINE.


DATA: TI_OUTPUT TYPE STANDARD TABLE OF TY_OUTPUT WITH HEADER LINE.
DATA: W_COMPENSA TYPE TY_COMPENSA,
G_BLOQUEO_WERKS,
CHK_PARCIAL.
" Check Pago Parcial - JM
DATA: T_LINEITEMS TYPE BAPI3007_2 OCCURS 0 WITH HEADER LINE.
*
*
* DECLARACION DE FIELD-SYMBOLS
*
*
FIELD-SYMBOLS: <HEADER> LIKE LINE OF T_HEADER,
<VBAK> LIKE LINE OF T_VBAK.
DATA: BDCDATA
BDMSGCALL
PT_EXCLUDE
nes a excluir del
W_AUGBL
de compensacion
W_ZUONR
W_BUDAT
W_BSTNK
W_FELIQU

LIKE BDCDATA
LIKE BDCMSGCOLL
TYPE UI_FUNCTIONS,
toolBar
LIKE BSAD-AUGBL,
LIKE
LIKE
LIKE
LIKE

OCCURS 0 WITH HEADER LINE,


OCCURS 0 WITH HEADER LINE,

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

TYPE BMODE_BTCI DEFAULT 'E'

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.

READ TABLE T_VBAK INDEX LV_NODEKEY INTO LWA_READ.


W_BSTNK = LWA_READ-BSTNK.
MOVE W_BSTNK TO W_COMPENSA-LIQU.
PERFORM INIT_CONTAINER USING LWA_READ-BSTNK.

*
*
*

CALL METHOD G_ALV_TREE->SET_USER_COMMAND


IMPORTING
I_FCODE = SY-UCOMM.

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.

*
*
*
**
*

Datos para BAPI


DATA:

*
*
*
*

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.

* 5. Query the function codes of the toolbar in your implementation.


CASE FCODE.
WHEN 'VER'.
PERFORM LEER_LIQUIDACION.
*** Determine which line is selected
*
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.
ENDCASE.
ENDMETHOD.

"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

* LOCAL CLASSES: Definition


***********************************************************************
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS: HANDLE_TOOLBAR
FOR EVENT TOOLBAR
OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT
E_INTERACTIVE.
METHODS: HANDLE_USER_COMMAND
FOR EVENT USER_COMMAND
OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM.
METHODS: HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK
OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
PRIVATE SECTION.
ENDCLASS.
"lcl_event_receiver DEFINITION
* LOCAL CLASSES: Implementation
***************************************************************
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_TOOLBAR.
DATA: LS_TOOLBAR TYPE STB_BUTTON.
CLEAR LS_TOOLBAR.
MOVE 3 TO LS_TOOLBAR-BUTN_TYPE.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

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'.
*
*
*
*
*
*
*
*
*
*
*
*

*
*

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.

"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.
*

si el usuario es de provincia (AP02 - AP13)


IF P_WERKS BETWEEN 'AP02' AND 'AP13'.
G_BLOQUEO_WERKS = 'X'.
ELSE.
CLEAR G_BLOQUEO_WERKS.
ENDIF.

*
*
* START-OF-SELECTION
*
*
START-OF-SELECTION.
PERFORM OBTENER_DATOS.
IF G_ALV_TREE IS INITIAL.
PERFORM INIT_TREE.

CALL METHOD CL_GUI_CFW=>FLUSH


EXCEPTIONS
CNTL_SYSTEM_ERROR = 1
CNTL_ERROR
= 2.
ENDIF.
CALL SCREEN 300.
*
*
*
FORM init_tree
*
*
FORM INIT_TREE.

DATA: L_TREE_CONTAINER_NAME(30) TYPE C.


L_TREE_CONTAINER_NAME = 'TREE_CONTROL'.
CREATE OBJECT G_CUSTOM_CONTAINER
EXPORTING
CONTAINER_NAME
=
EXCEPTIONS
CNTL_ERROR
=
CNTL_SYSTEM_ERROR
=
CREATE_ERROR
=
LIFETIME_ERROR
=
LIFETIME_DYNPRO_DYNPRO_LINK =
CREATE OBJECT G_ALV_TREE
EXPORTING
PARENT
*
APPL_EVENTS
*
NODE_SELECTION_MODE
ITEM_SELECTION
NO_HTML_HEADER
NO_TOOLBAR
EXCEPTIONS
CNTL_ERROR
CNTL_SYSTEM_ERROR
CREATE_ERROR
LIFETIME_ERROR
ILLEGAL_NODE_SELECTION_MODE
FAILED
ILLEGAL_COLUMN_NAME

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.

creando los eventos para la grilla


CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_USER_COMMAND FOR GRID1.
SET HANDLER EVENT_RECEIVER->HANDLE_TOOLBAR
FOR GRID1.

SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GRID1.


CALL METHOD GRID1->SET_TOOLBAR_INTERACTIVE.
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = GRID1.
*

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.

creando los eventos para la grilla


CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_USER_COMMAND FOR GRID1.
SET HANDLER EVENT_RECEIVER->HANDLE_TOOLBAR
FOR GRID1.
SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GRID1.
CALL METHOD GRID_COMP->SET_TOOLBAR_INTERACTIVE.
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = GRID_COMP.

ELSE.
actualizando la grilla
CALL METHOD GRID_COMP->REFRESH_TABLE_DISPLAY.
ENDIF.

ENDFORM.

"INIT_CONTAINER_COMP

*
*
* FORM FILL_CATALOG_TREE
*
*
FORM FILL_CATALOG_TREE.

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-TABNAME
GS_FIELDCAT-OUTPUTLEN
APPEND GS_FIELDCAT TO

= 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.

DATA: L_ROOT_KEY TYPE LVC_NKEY,


L_NEXT_KEY TYPE LVC_NKEY,
L_LAST_KEY TYPE LVC_NKEY,
HEADER TYPE STRING,
W_MENGE_TEXT(13) TYPE C.
CLEAR L_ROOT_KEY.
LOOP AT T_HEADER ASSIGNING <HEADER>.
CLEAR L_ROOT_KEY.
CLEAR L_NEXT_KEY.
PERFORM ADD_NODE USING <HEADER>-KUNNR L_ROOT_KEY
CHANGING L_NEXT_KEY.
LOOP AT T_VBAK ASSIGNING <VBAK>
WHERE KUNNR EQ <HEADER>-KUNNR.
MOVE-CORRESPONDING <VBAK> TO TAB_TREE.
PERFORM ADD_LEAF USING TAB_TREE L_NEXT_KEY
CHANGING L_LAST_KEY.
ENDLOOP.
ENDLOOP.
CALL METHOD G_ALV_TREE->FRONTEND_UPDATE.
ENDFORM.

"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.

CALL METHOD G_ALV_TREE->ADD_NODE


EXPORTING
I_RELAT_NODE_KEY = L_NEXT_KEY
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
IS_OUTTAB_LINE = TAB_TREE
IMPORTING
E_NEW_NODE_KEY = L_LAST_KEY.
ENDFORM.
"ADD_LEAF
*
*
*
FORM OBTENER_DATOS
*
*
FORM OBTENER_DATOS.
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_VBKD LIKE STANDARD TABLE OF VBKD WITH HEADER LINE.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE TI_VBAK_CAB
FROM VBAK
WHERE
AUART IN S_AUART AND
VKORG EQ P_VKORG AND
VTWEG EQ P_VTWEG AND
KUNNR EQ P_KUNNR AND
SPART EQ P_SPART." AND
SORT TI_VBAK_CAB BY VBELN.
IF NOT TI_VBAK_CAB[] IS INITIAL.
SELECT * INTO CORRESPONDING FIELDS OF TABLE TI_VBKD
FROM VBKD FOR ALL ENTRIES IN TI_VBAK_CAB[]
WHERE
VBELN EQ TI_VBAK_CAB-VBELN.
SORT TI_VBKD BY VBELN.
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.
ENDIF.
DATA W_CHAR(10) TYPE C.
LOOP AT TI_VBAP.

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.

** busca la factura sd, desde el flujo de documentos


SELECT * INTO CORRESPONDING FIELDS OF TABLE TI_VBFA
FROM VBFA FOR ALL ENTRIES IN TI_VBAK_CAB[]
WHERE VBELV EQ TI_VBAK_CAB-VBELN.
SORT TI_VBFA BY VBELV.
** busca la factura sd, asociado al pedido
IF NOT TI_VBFA[] IS INITIAL.
SELECT * INTO CORRESPONDING FIELDS OF TABLE TI_VBRK
FROM VBRK FOR ALL ENTRIES IN TI_VBFA[]
WHERE VBELN EQ TI_VBFA-VBELN.
SORT TI_VBRK BY VBELN.
ENDIF.
ENDIF.
FIELD-SYMBOLS:
FIELD-SYMBOLS:
FIELD-SYMBOLS:
FIELD-SYMBOLS:

<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.

LOOP AT TI_VBAP ASSIGNING <FS_VBAP>.


TI_OUTPUT-VBELN = <FS_VBAP>-VBELN.
TI_OUTPUT-NETWR = <FS_VBAP>-NETWR.
TI_OUTPUT-ZMENG = <FS_VBAP>-ZMENG.
TI_OUTPUT-TIGV = ( <FS_VBAP>-NETWR * '18' ) / 100.
TI_OUTPUT-TTOTA = TI_OUTPUT-NETWR + TI_OUTPUT-TIGV.
UNASSIGN <FS_VBFA>.
READ TABLE TI_VBFA ASSIGNING <FS_VBFA>
WITH KEY VBELV = <FS_VBAP>-VBELN BINARY SEARCH.
IF <FS_VBFA> IS ASSIGNED.
UNASSIGN <FS_VBRK>.
READ TABLE TI_VBRK ASSIGNING <FS_VBRK>
WITH KEY VBELN = <FS_VBFA>-VBELN BINARY SEARCH.
IF <FS_VBRK> IS ASSIGNED.
TI_OUTPUT-AUART = <FS_VBRK>-FKART.
TI_OUTPUT-AUDAT = <FS_VBRK>-FKDAT.
TI_OUTPUT-VBEL1 = <FS_VBRK>-VBELN.
TI_OUTPUT-XBLNR = <FS_VBRK>-XBLNR.
*

DATA W_SERIEP LIKE ZSDTB_SERIEXCENT-SERIE_PLAY.

*
*
*
*
*
*
*
*
*
*
*

SELECT SINGLE SERIE_PLAY INTO W_SERIEP


FROM ZSDTB_SERIEXCENT
WHERE
BUKRS EQ P_BUKRS AND
VKORG EQ P_VKORG AND
VTWEG EQ P_VTWEG AND
SPART EQ P_SPART AND
CENTRO EQ P_WERKS AND
TIPO_SERIE EQ 'PLAY' AND
MATNR
EQ <FS_VBAP>-MATNR.

*
*

CONCATENATE <FS_VBRK>-XBLNR(2)'-' W_SERIEP '-' <FS_VBRK>-XBLNR+8(8)


INTO TI_OUTPUT-XBLN1.
ENDIF.
REFRESH: TI_BKPF.
CLEAR: TI_BKPF.
CALL FUNCTION 'FI_DOCUMENT_READ'
EXPORTING
I_AWTYP
= 'VBRK'
I_AWREF
= TI_OUTPUT-VBEL1
I_BUKRS
= P_BUKRS
I_GJAHR
= P_GJAHR
TABLES
T_BKPF
= TI_BKPF
EXCEPTIONS
WRONG_INPUT = 1
NOT_FOUND = 2
OTHERS
= 3.
IF SY-SUBRC = 0.
UNASSIGN <FS_BKPF>.
LOOP AT TI_BKPF ASSIGNING <FS_BKPF>.
IF <FS_BKPF> IS ASSIGNED.
TI_OUTPUT-BELNR = <FS_BKPF>-BELNR.
TI_OUTPUT-WAERS = <FS_BKPF>-WAERS.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
APPEND TI_OUTPUT.
ENDLOOP.
PERFORM DETALLE_COMPENSA.

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

GJAHR EQ P_GJAHR AND


BELNR EQ TI_OUTPUT-BELNR AND
ZUONR EQ W_BSTNK.
SELECT DMBTR HKONT ZUONR
INTO (W_COMPENSA-DMBTR,
W_COMPENSA-HKONT,
W_COMPENSA-ZUONR)
FROM BSIS
WHERE
BELNR EQ W_COMPENSA-BELNR AND
BUKRS EQ P_BUKRS AND
GJAHR EQ P_GJAHR AND
HKONT LIKE '001041%'.
W_COMPENSA-ESTAD = 'COMPENSADO'.
ENDSELECT.
SELECT DMBTR HKONT ZUONR
INTO (W_COMPENSA-DMBTR,
W_COMPENSA-HKONT,
W_COMPENSA-ZUONR)
FROM BSAS
WHERE
BELNR EQ W_COMPENSA-BELNR AND
BUKRS EQ P_BUKRS AND
GJAHR EQ P_GJAHR AND
HKONT LIKE '001041%'.
W_COMPENSA-ESTAD = 'CONCILIADO'.
ENDSELECT.
ENDSELECT.
ENDLOOP.
ENDFORM.

"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

* OBTENIENDO FORMATO DE FECHA PARA LA CONTABILIZACION


CONCATENATE W_COMPENSA-BUDAT+6(2) W_COMPENSA-BUDAT+4(2) W_COMPENSA-BUDAT+0(4)
INTO W_BUDAT SEPARATED BY '.'.
CONCATENATE P_WERKS '-' 'Playa No Abonados' INTO W_BKTXT.
W_DMBTR = W_COMPENSA-DMBTR.

PERFORM LLENAR_BDCDATA USING:


'SAPMF05A'
'0122'
'X'
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
ilizacin
' '
' '
' '
nco
*
*PERFORM LLENAR_BDCDATA USING:
*
'SAPMF05L'
'0300'
'X'
*
' '
' '
' '
*
' '
' '
' '
*
' '
' '
' '
*
' '
' '
' '
*
' '
' '
' '
*
' '
' '
' '
PERFORM LLENAR_BDCDATA USING:
'SAPMF05A'
'0300'
'X'
' '
' '
' '
' '
' '
' '

' '
'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

'RF05A-NEWKO' P_HKONT. " cuenta mayor ba

' '
'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',

'
'
'

'
'
'

'
'
'

'
'
'

'
'
'

'
'
'

PERFORM LLENAR_BDCDATA USING:


'SAPLKACB'
'0002'
'X'
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
0003BLOCK1'.

'BSEG-WRBTR'
'BSEG-VALUT'
'BSEG-ZUONR'

PERFORM LLENAR_BDCDATA USING:


'SAPMF05A'
'0710'
'X'
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
laya
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '

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'.

PERFORM LLENAR_BDCDATA USING:


'SAPMF05A'
'0731'
'X'
' '
' '
' '
' '
' '
' '
' '
' '
' '

' '
' ',
'BDC_CURSOR' 'RF05A-SEL01(01)',
'BDC_OKCODE' '/00',
'RF05A-SEL01(01)' W_COMPENSA-LIQU.

PERFORM LLENAR_BDCDATA USING:


'SAPMF05A'
'0731'
'X'
' '
' '
' '
' '
' '
' '

' '
'BDC_CURSOR'
'BDC_OKCODE'

' ',
'RF05A-SEL01(01)',
'=PA'.

* JM
IF CHK_PARCIAL EQ 'X'.
*

*
*
*

seleccionando pago parcial


PERFORM LLENAR_BDCDATA USING:
'SAPDF05X'
'3100'
'X'
' '
' '
' '
' '
' '
' '
6102PAGE',
' '
' '
' '

' '
'BDC_OKCODE'
'BDC_SUBSCR'

' ',
'=PART',
'SAPDF05X

'BDC_CURSOR'

'RF05A-ABPOS'.

===========================================================================
lgica para identificar la posicin del documento a aplicar el pago parcial
===========================================================================

* ordenando descendentemente por el importe (el importe mayor estar en la prime


ra posicin)
PERFORM LLENAR_BDCDATA USING:
'SAPDF05X'
'3100'
'X'
' '
' ',
' '
' '
' '
'BDC_OKCODE' '=OSD',
' '
' '
' '
'BDC_SUBSCR' 'SAPDF05X
6102PAGE',
' '
' '
' '
'BDC_CURSOR' 'DF05B-PSBET(01)'.

marcando todas las posiciones (para


PERFORM LLENAR_BDCDATA USING:
'SAPDF05X'
'3100'
'X'
' '
' '
' '
' '
' '
' '
6102PAGE',
' '
' '
' '

desactivarlas)
' '
'BDC_OKCODE'
'BDC_SUBSCR'

' ',
'=OMX',
'SAPDF05X

'BDC_CURSOR'

'DF05B-PSBET(01)'.

desactivando todas las posiciones


PERFORM LLENAR_BDCDATA USING:
'SAPDF05X'
'3100'
'X'
' '
' '
' '
' '
' '
' '
6102PAGE',
' '
' '
' '

' '
'BDC_OKCODE'
'BDC_SUBSCR'

' ',
'=Z-',
'SAPDF05X

'BDC_CURSOR'

'RF05A-ABPOS'.

activando la primera posicin


PERFORM LLENAR_BDCDATA USING:
'SAPDF05X'
'3100'
'X'
' '
' '
' '
' '
' '
' '
6102PAGE',
' '
' '
' '

' '
'BDC_OKCODE'
'BDC_SUBSCR'

' ',
'=PI',
'SAPDF05X

'BDC_CURSOR'

'DF05B-PSBET(01)'.

asignando el importe parcial


PERFORM LLENAR_BDCDATA USING:
'SAPDF05X'
'3100'
'X'
' '
' '
' '
' '
' '
' '
6104PAGE',
' '
' '
' '
' '
' '
' '

' '
'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)'.

PERFORM LLENAR_BDCDATA USING:


'SAPDF05X'
'3100'
'X'
' '
' '
' '
' '
' '
' '

' '
'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)'.

PERFORM LLENAR_BDCDATA USING:


'SAPDF05X'
'3100'
'X'
' '
' '
' '
' '
' '
' '
6102PAGE',
' '
' '
' '

'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'.

SET TITLEBAR 'TITUL'.


CASE OK_CODE.
WHEN 'EXIT'.
ENDCASE.
ENDMODULE.
" STATUS_0300 OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0300 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0300 INPUT.
CASE OK_CODE.
WHEN 'EXIT'.
*
PERFORM exit_program.
LEAVE TO SCREEN 0.
LEAVE PROGRAM.
WHEN 'SAVE'.
DATA: LT_ROWS TYPE LVC_T_ROW.
DATA: LF_ANSWR TYPE C.
IF NOT W_COMPENSA-BELNR IS INITIAL.
MESSAGE 'La LC ya se encuentra compensado' TYPE 'E'.
EXIT.
ENDIF.
DATA W_TOTAL LIKE BSID-DMBTR.
IF W_COMPENSA-DMBTR = SPACE.
MESSAGE 'Importe no cuadra con Liquidacin' TYPE 'E'.
EXIT.
ENDIF.
IF W_COMPENSA-ZUONR = SPACE.
MESSAGE 'Ingresar nro de operacin' TYPE 'E'.
EXIT.
ENDIF.
IF W_COMPENSA-BUDAT = SPACE.
MESSAGE 'Ingresar Fecha valor' TYPE 'E'.
EXIT.
ENDIF.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
DEFAULTOPTION = 'N'
TEXTLINE1
= ' Desea Compensar los documentos ?'
TITEL
= 'TUUA Manual'
CANCEL_DISPLAY = 'X'
IMPORTING
ANSWER
= LF_ANSWR.
IF LF_ANSWR EQ 'J'.
PERFORM C03_COMPENSAR.
CALL METHOD GRID1->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDCASE.

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.
*
*
*
*
*

1.Get toolbar instance of your ALV Tree.


When you instantiate an instance of CL_GUI_ALV_TREE the constructor
of the base class (CL_ALV_TREE_BASE) creates a toolbar.
Fetch its reference with the following method if you want to
modify it:
CALL METHOD G_ALV_TREE->GET_TOOLBAR_OBJECT
IMPORTING
ER_TOOLBAR = G_TOOLBAR.
CHECK NOT G_TOOLBAR IS INITIAL. "could happen if you do not use the
"standard toolbar

* 2.Modify toolbar with methods of CL_GUI_TOOLBAR:


* add seperator to toolbar
CALL METHOD G_TOOLBAR->ADD_BUTTON
EXPORTING
FCODE
= ''
ICON
= ''
BUTN_TYPE = CNTB_BTYPE_SEP.
* add Standard Button to toolbar (for Delete Subtree)
CALL METHOD G_TOOLBAR->ADD_BUTTON
EXPORTING
FCODE
= 'VER'
ICON
= '@15@'
BUTN_TYPE = CNTB_BTYPE_BUTTON
TEXT
= 'Ver Detalle'
QUICKINFO = TEXT-901. "Delete subtree
ENDFORM.
"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

You might also like