SAP ABAP FUNCTIONS POPUP GET VALUES USER BUTTONS
From SapWiki
REPORT yrsspo450 MESSAGE-ID s4 LINE-SIZE 132.
*-----------------------------------------------------------------------
* Beispielprogramm für den Einsatz und den Aufruf des Funktionsbausteins
*
* POPUP_GET_VALUES_USER_BUTTONS
*
* Für den Customizing-Transport soll über ein Dialogfenster eine
* Korrekturnummer erfragt werden. Aus dem Dialogfenster heraus soll
* es möglich sein, die Korrekturnummer zu suchen und eine neue
* Korrektur anzulegen. An die Korrektur werden bestimmte Anforderungen
* gestellt: es muß eine nicht freigegebene Korrektur sein, die dem
* Anwender selbst gehört und die nicht gesperrt ist. Die F4-Hilfe
* soll nur Korrekturen anbieten, die diesen Bedingungen genügen.
* Der Funktionsbaustein POPUP_GET_VALUES_USER_BUTTONS wird dabei
* verwendet, um die Oberfläche zu realisieren. Die Prüfungen sowie
* die Absprünge zum Suchen und Anlegen der Korrektur sowie die
* einschränkende F4-Hilfe müssen selbst programmiert werden.
*-----------------------------------------------------------------------
DATA: subrc LIKE sy-subrc,
corr_nr LIKE e070-trkorr.
INCLUDE <icon>.
DATA ld_a(1) TYPE c.
DATA gs_sval LIKE sval.
DATA gt_sval TYPE TABLE OF sval.
* Routine zum Erfragen der Korrekturnummer aufrufen
PERFORM get_monto_pago CHANGING subrc.
IF subrc = 0.
* action
ELSE.
* Anwender hat Aktion abgebrochen
WRITE: / 'Cancelado por usuario'.
ENDIF.
*&---------------------------------------------------------------------*
*& Form get_monto_pago
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->SUBRC text
* -->CORR_NUMBER text
*----------------------------------------------------------------------*
FORM get_monto_pago CHANGING subrc.
*-----------------------------------------------------------------------
* Korrekturnummer erfragen
* Schnittstelle:
* CORR_NUMBER Korrekturnummer
* SUBRC = 0 Korrekturnummer ist richtig gefüllt.
* SUBRC <> 0 Funktion vom Anwender abgebrochen (F12)
*-----------------------------------------------------------------------
* Tabelle mit Feldangaben für das Dialogfenster
DATA: BEGIN OF fields OCCURS 1.
INCLUDE STRUCTURE sval.
DATA: END OF fields,
* Rückgabewert
returncode(1) TYPE c,
* Titel des Dialogfensters
popup_title(30) TYPE c,
* Text der Standardrucktaste
ok_pushbuttontext LIKE svalbutton-buttontext,
icon_ok_push LIKE icon-name,
quickinfo_ok_push LIKE smp_dyntxt-text,
* Text zur ersten zusätzlichen Drucktaste
first_pushbutton LIKE svalbutton-buttontext,
icon_button_1 LIKE icon-name,
quickinfo_button_1 LIKE smp_dyntxt-text,
* Text zur zweiten zusätzlichen Drucktaste
second_pushbutton LIKE svalbutton-buttontext,
icon_button_2 LIKE icon-name,
quickinfo_button_2 LIKE smp_dyntxt-text.
* Überschrift des Dialogfensters festlegen
popup_title = 'Pago en Efectivo(en Pesos)'.
CLEAR gs_sval.
gs_sval-tabname = 'VBRK'.
gs_sval-fieldname = 'NETWR'.
gs_sval-field_attr = '03'.
gs_sval-FIELDTEXT = 'Monto Factura'.
gs_sval-field_obl = 'X'.
gs_sval-value = 100.
APPEND gs_sval TO gt_sval.
CLEAR gs_sval.
gs_sval-tabname = 'VBRK'.
gs_sval-fieldname = 'WAERK'.
gs_sval-field_attr = '04'.
gs_sval-value = 'CLP'.
APPEND gs_sval TO gt_sval.
CLEAR gs_sval.
gs_sval-tabname = 'BKPF'.
gs_sval-fieldname = 'WAERS'.
gs_sval-field_attr = '04'.
gs_sval-value = 'CLP'.
APPEND gs_sval TO gt_sval.
CLEAR gs_sval.
gs_sval-tabname = 'VBRK'.
gs_sval-fieldname = 'KUNRG'.
gs_sval-field_attr = '03'.
gs_sval-value = '1'.
APPEND gs_sval TO gt_sval.
CLEAR gs_sval.
gs_sval-tabname = 'KNA1'.
gs_sval-fieldname = 'NAME1'.
gs_sval-field_attr = '03'.
gs_sval-value = 'Pepe'.
APPEND gs_sval TO gt_sval.
CLEAR gs_sval.
gs_sval-tabname = 'BSEG'.
gs_sval-fieldname = 'WRBTR'.
gs_sval-FIELDTEXT = 'Monto del Pago'.
gs_sval-field_obl = 'X'.
gs_sval-value = 100.
APPEND gs_sval TO gt_sval.
* ok_pushbuttontext = 'Weiter'(025).
icon_ok_push = icon_okay.
* QUICKINFO_OK_PUSH = 'Weiter'(025).
first_pushbutton = 'Ejecutar'.
icon_button_1 = icon_execute_object.
quickinfo_button_1 = 'Ejecutar'.
CALL FUNCTION 'POPUP_GET_VALUES_USER_BUTTONS'
EXPORTING popup_title = popup_title
programname = 'YRSSPO450'
formname = 'HANDLE_CODE'
* F4_PROGRAMNAME = 'RSSPO450'
* F4_FORMNAME = 'CORRNR_VALUE_HELP'
ok_pushbuttontext = ok_pushbuttontext
icon_ok_push = icon_ok_push
quickinfo_ok_push = quickinfo_ok_push
first_pushbutton = first_pushbutton
icon_button_1 = icon_button_1
quickinfo_button_1 = quickinfo_button_1
second_pushbutton = second_pushbutton
icon_button_2 = icon_button_2
quickinfo_button_2 = quickinfo_button_2
IMPORTING returncode = returncode
TABLES fields = gt_sval.
IF returncode EQ 'A'.
* Anwender hat die Aktion abgebrochen
subrc = '4'.
* CLEAR corr_number.
ELSE.
* Anwender hat eine gültige Korrekturnummer angegeben
subrc = '0'.
READ TABLE gt_sval into gs_sval INDEX 6.
ENDIF.
ENDFORM. "get_monto_pago
*&---------------------------------------------------------------------*
*& Form HANDLE_CODE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FIELDS text
* -->CODE text
* -->ERROR text
* -->SHOW_POPUP text
*----------------------------------------------------------------------*
FORM handle_code TABLES fields STRUCTURE sval
USING code
CHANGING error STRUCTURE svale show_popup.
DATA ld_m1 LIKE vbrk-netwr.
DATA ld_m2 LIKE vbrk-netwr.
* Routine zur Behandlung der OkCodes des Dialogfensters
CASE code.
WHEN 'FURT'.
CLEAR error.
show_popup = 'X'.
READ TABLE fields INDEX 1.
MOVE fields-value TO ld_m1.
READ TABLE fields INDEX 6.
MOVE fields-value TO ld_m2.
IF ld_m2 = 0.
CLEAR error.
error-errortab = 'BSEG'.
error-errorfield = 'WRBTR'.
error-msgty = 'E'.
error-msgid = 'V1'.
error-msgno = '899'.
error-msgv1 = 'Monto Pago debe ser mayor que cero'.
return.
ENDIF.
IF ld_m2 > ld_m1.
CLEAR error.
error-errortab = 'BSEG'.
error-errorfield = 'WRBTR'.
error-msgty = 'E'.
error-msgid = 'V1'.
error-msgno = '899'.
error-msgv1 = 'Monto Pago mayor Monto Factura'.
return.
ENDIF.
WHEN 'COD1'.
READ TABLE fields INDEX 1.
MOVE fields-value TO ld_m1.
READ TABLE fields INDEX 6.
MOVE fields-value TO ld_m2.
clear show_popup.
IF ld_m2 = 0.
CLEAR error.
error-errortab = 'BSEG'.
error-errorfield = 'WRBTR'.
error-msgty = 'E'.
error-msgid = 'V1'.
error-msgno = '899'.
error-msgv1 = 'Monto Pago debe ser mayor que cero'.
show_popup = 'X'.
return.
ENDIF.
IF ld_m2 > ld_m1.
CLEAR error.
error-errortab = 'BSEG'.
error-errorfield = 'WRBTR'.
error-msgty = 'E'.
error-msgid = 'V1'.
error-msgno = '899'.
error-msgv1 = 'Monto Pago mayor Monto Factura'.
show_popup = 'X'.
else.
show_popup = ' '.
ENDIF.
ENDCASE.
ENDFORM. "HANDLE_CODE
*Text elements
*----------------------------------------------------------
* 037 Crear orden
* 040 Crear corrección
* 045 Txt.corrección
* 005 Nº corrección
* 010 Usuario ha cancelado diálogo
* 015 Indicar Nº corrección
* 020 Nº corrección
* 025 Cont.
* 030 Buscar
* 035 Crear
* 036 Buscar por órdenes
*Selection texts
*----------------------------------------------------------
* EXAMPLE1 Ejemplo 1
* EXAMPLE2 Ejemplo 2
* EXAMPLE3 Ejemplo 3
* EXAMPLE4 Ejemplo 4