Está en la página 1de 4

Como obtener los textos de material y servicios junto con las posiciones de los pedidos.

En el programa Z del pool de subrutinas crear las siguientes subrutinas: Para obtener el texto de materiales. En la ventana MAIN del sapscript escribir: /: INCLUDE &EKPO-EMATN(K)& OBJECT 'MATERIAL' ID BEST NEW-PARAGRAPH ZX Esto es para cada posicin de bienes. Para obtener el texto de servicios. Dentro del tem /E SERVICES de la ventana MAIN del sapscript (correspondiente a servicios) escribir: /* ******** Perform para obtener paquete de servicio *********** /: PERFORM GET_SERVICE_PACK IN PROGRAM ZSMPR01 /: USING &EKPO-PACKNO& /: USING &ML_ESLL-EXTROW& /: CHANGING &PAQUETE_SERV& /: ENDPERFORM /: INCLUDE &PAQUETE_SERV& OBJECT 'ESLL' ID LLTX NEW-PARAGRAPH ZW En el programa Z del pool de subrutinas crear la siguiente subrutina:
*&---------------------------------------------------------------------* *& Form get_service_pack *&---------------------------------------------------------------------* * Subrutina para obtener el packno del servicio. *----------------------------------------------------------------------* * -->L_TDID text * -->L_LANG text * -->L_NAME text * -->L_OBJC text * -->L_TEXT text *----------------------------------------------------------------------* FORM get_service_pack TABLES input_tab LIKE t_itcsy "#EC CALLED output_tab LIKE t_itcsy. DATA: lt_service TYPE TABLE OF esll, lw_service TYPE esll, lv_package LIKE ekpo-packno, lv_packno TYPE esll-packno, lv_introw TYPE esll-introw, lv_servicio(20) TYPE c,

lv_extr TYPE esll-extrow. CLEAR: lv_packno,lv_introw,lv_servicio,lv_package. SORT input_tab BY name. READ TABLE input_tab INTO gw_itcsy WITH KEY name = 'EKPO-PACKNO' BINARY SEARCH. lv_package = gw_itcsy-value. CALL FUNCTION 'MS_READ_SERVICES' EXPORTING i_hpackno = lv_package * I_PACKNO = TABLES t_esll = lt_service * T_HPACKNO_RANGE = .
SORT input_tab BY name. READ TABLE input_tab INTO gw_itcsy WITH KEY name = 'ML_ESLL-EXTROW' BINARY SEARCH. lv_extr = gw_itcsy-value.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = lv_extr IMPORTING output = lv_extr. READ TABLE lt_service INTO lw_service WITH KEY extrow = lv_extr. IF sy-subrc = 0. lv_packno = lw_service-packno. ENDIF. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = lv_packno IMPORTING output = lv_packno. lv_introw = lw_service-introw. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = lv_introw IMPORTING output = lv_introw. CONCATENATE lv_packno lv_introw INTO lv_servicio. READ TABLE output_tab INTO gw_itcsy INDEX 1. gw_itcsy-value = lv_servicio. MODIFY output_tab INDEX 1 FROM gw_itcsy TRANSPORTING value.

ENDFORM.

"get_service_pack

Para obtener las posiciones del documento: En la ventana MAIN del sapscript, escribir el siguiente perform. /* ********** Perform para obtener textos de posicion de pedido ********** /: PERFORM GET_TXT_POSITIONS IN PROGRAM ZSMPR01 /: USING &EKKO-EBELN& /: USING &EKPO-EBELP& /: CHANGING &TXT_POSITIONS& /: ENDPERFORM Y para cada posicin tanto de material y servicio escribir: /: INCLUDE &TXT_POSITIONS& OBJECT 'EKPO' ID F01 NEW-PARAGRAPH ZX En el programa Z del pool de subrutinas crear la siguiente subrutina:
*&---------------------------------------------------------------------* *& Form get_txt_positions *&---------------------------------------------------------------------* * Obtiene los textos de las posiciones del documento. *----------------------------------------------------------------------* * -->IN_TAB text * -->OUT_TAB text *----------------------------------------------------------------------* FORM get_txt_positions TABLES input_tab LIKE t_itcsy "#EC CALLED output_tab LIKE t_itcsy. DATA: l_ebeln TYPE ekko-ebeln, l_ebelp TYPE ekpo-ebelp, SORT input_tab BY name. READ TABLE input_tab INTO gw_itcsy WITH KEY name = 'EKKO-EBELN' BINARY SEARCH. l_ebeln = gw_itcsy-value. SORT input_tab BY name. READ TABLE input_tab INTO gw_itcsy WITH KEY name = 'EKPO-EBELP' BINARY SEARCH. l_ebelp = gw_itcsy-value.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_ebeln IMPORTING output = l_ebeln. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_ebelp IMPORTING

output = l_ebelp. CONCATENATE l_ebeln l_ebelp INTO l_name.

READ TABLE output_tab INTO gw_itcsy WITH KEY name = 'TXT_POSITIONS'. gw_itcsy-value = l_name. MODIFY output_tab INDEX 1 FROM gw_itcsy TRANSPORTING value. ENDFORM. "get_text_positions.

También podría gustarte